Definición
autoCompactNuevo en la versión 8.0.
Habilita o deshabilita el fondo Compactación. Cuando
autoCompactestá habilitada, itera periódicamente a través de todos los archivos disponibles y ejecuta la compactación continuamente si hay suficiente espacio de almacenamiento libre.Antes de
autoCompacthabilitar, ejecute la$collStatsetapa de agregación con lastorageStats: {}opción para comprobar si dispone de suficiente espacio de almacenamiento para continuar con la compactación. Si el espacio disponible devuelto porfreeStorageSizees inferiorfreeSpaceTargetMBa, la compactación en segundo plano no tiene efecto.
Sintaxis
El comando tiene la siguiente sintaxis:
db.runCommand( { autoCompact: <boolean>, freeSpaceTargetMB: <int>, // Optional runOnce: <boolean>, // Optional } )
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Importante
Este comando no es compatible con los clústeres M0 y Flex. Para obtener más información, consulta Comandos no compatibles.
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Campos de comandos
El comando puede aceptar los siguientes campos opcionales:
Campo | Tipo | Descripción |
|---|---|---|
| entero | Opcional. Especifica la cantidad mínima de espacio de almacenamiento, en megabytes, que debe ser recuperable para que la compactación pueda proceder. Por defecto: 20 |
| booleano | Opcional. Si Si |
Privilegios requeridos
Para clústeres que aplican autenticación:
MongoDB Atlas: los usuarios deben tener el rol
autoCompactintegrado.Implementaciones autogestionadas: Los usuarios deben tener el privilegio
compacten el clúster. El rolhostManagerproporciona los privilegios necesarios para ejecutarautoCompact.
Comportamiento
Bloqueo
La compactación en segundo plano activada por autoCompact aplica el mismo comportamiento de bloqueo que el comando. Por lo tanto, si se compact llama autoCompact a mientras la compactación en segundo plano está activa, MongoDB devuelve un error.
Si necesita reiniciar autoCompact o ejecutarlo nuevamente con opciones diferentes, primero debe detener la operación de compactación en segundo plano actual:
db.runCommand( { autoCompact: false } )
Una vez deshabilitada la compactación de fondo actual, puede reiniciar autoCompact con la nueva configuración.
Colecciones excluidas
Si existe un oplog, MongoDB lo excluye de la compactación en segundo plano.
Consideraciones sobre el rendimiento
Recomendamos ejecutar autoCompact durante períodos de poco tráfico.
La compactación realiza regularmente puntos de control en la base de datos, lo que puede llevar a unos gastos en general de sincronización. En bases de datos con mucho tráfico, esto puede retrasar o impedir tareas operativas como realizar copias de seguridad. Para evitar interrupciones inesperadas, desactive la compactación antes de realizar una copia de seguridad.
Sets de réplicas
Puede ejecutar la compactación en segundo plano en colecciones e índices almacenados en un conjunto de réplicas. Sin embargo, tenga en cuenta lo siguiente:
El nodo principal no replica el comando
autoCompacta los nodos secundarios.Un nodo secundario puede replicar datos mientras la compactación en segundo plano está en ejecución.
Se permiten lecturas y escrituras mientras se ejecuta la compactación en segundo plano.
Clústeres fragmentados
autoCompact Solo se aplica a instancias. En un entorno fragmentado,mongod ejecute autoCompact en cada fragmento por separado.
No se puede ejecutar autoCompact contra una instancia de mongos.