ver varios una modificar insertar eliminar documentos datos crear consola como colecciones coleccion actualizar mongodb repair

varios - Eliminar datos de MongoDB-recuperar espacio en disco



insertar varios documentos en mongodb (3)

  1. Si es correcto.
  2. No, es mejor darle a mongodb tanto espacio de disco como sea posible (si mongodb puede asignar más espacio que la menor fragmentación de disco que tendrá, en el espacio de asignación adicional es una operación costosa). Pero si lo desea, puede ejecutar db.repairDatabase() desde el shell mongodb para reducir el tamaño de la base de datos.
  3. Sí, puede ejecutar repairDatabase en una instancia de mongodb en vivo (es mejor ejecutarlo en ninguna hora pico)

Posible duplicado:
¿Auto compacta el espacio eliminado en mongodb?

Según tengo entendido, en las operaciones de eliminación, MongoDB no liberará espacio en el disco, sino que lo reutilizará según sea necesario.

  1. ¿Es eso correcto?
  2. Si no, ¿habría ejecutado un comando de reparación?
  3. ¿Se podría ejecutar la reparación en una instancia de mongo en vivo?

Esto es algo así como un duplicado de esta pregunta de MongoDB ...

¿Auto compacta el espacio eliminado en mongodb?

Ver esa respuesta para obtener detalles sobre cómo ...

  • Reclame un poco de espacio
  • Use serverside JS para ejecutar un trabajo recurrente para recuperar espacio (incluido un script que puede ejecutar ...)
  • ¡Cómo podría querer ver las Colecciones con límites para algunos casos de uso!

También puede ver esta publicación de blog relacionada: http://learnmongo.com/posts/compacting-mongodb-data-files/


Tengo otra solución que podría funcionar mejor que hacer db.repairDatabase () si no puede permitirse el bloqueo del sistema o si no tiene el doble de almacenamiento.

Debe estar utilizando un conjunto de réplicas.

Mi pensamiento es que una vez que haya eliminado todos los datos en exceso que están engullendo su disco, detenga una réplica secundaria, borre su directorio de datos, inícielo y deje que vuelva a sincronizarse con el maestro. Repita con los otros secundarios, uno a la vez.

En el master, haga un rs.stepDown () para entregar MASTER a uno de los secundarios sincronizados, ahora detenga este, límpielo y deje que vuelva a sincronizarse.

El proceso requiere mucho tiempo, pero solo debería costar unos pocos segundos de tiempo de inactividad, cuando se hace rs.stepDown ().