Tengo una colección con 9 millones de registros. Actualmente estoy usando el siguiente script para actualizar toda la colección:MongoDB: ¿Cuál es la forma más rápida de actualizar todos los registros en una colección?
simple_update.js
db.mydata.find().forEach(function(data) {
db.mydata.update({_id:data._id},{$set:{pid:(2571 - data.Y + (data.X * 2572))}});
});
Esto se ejecuta desde la línea de comandos de la siguiente manera:
mongo my_test simple_update.js
Así que todo lo que soy hacer es agregar un nuevo campo pid basado en un simple cálculo.
¿Hay una manera más rápida? Esto toma una cantidad significativa de tiempo.
Así que tienen múltiples instancias (esclavo/maestro) que sea más rápido? – mattjvincent
Master/Slave no mejorará su tiempo de escritura. Mongo solo tiene un hilo de escritura y, por lo general, está limitado por el rendimiento del disco cuando realiza una actualización masiva como esta. Las "instancias múltiples" que necesita son sharding. Con la fragmentación, tendrá dos máquinas con dos discos separados y obtendrá casi el doble del rendimiento de escritura. Sin embargo, de nuevo, mire su hardware y compárelo con su rendimiento esperado. –
Ok. Entiendo que. ¿Qué tal leer? ¿Es la fragmentación una forma de acelerar la lectura o la consulta también? – mattjvincent