Definición
autoCompactNuevo en la versión 8.0.
Habilita o deshabilita el fondo compactación. Cuando está habilitado,
autoCompactrecorre periódicamente todos los archivos disponibles y ejecuta continuamente la compactación si hay suficiente espacio de almacenamiento libre disponible.Antes de activar
autoCompact, ejecuta la etapa de agregación$collStatscon la opciónstorageStats: {}para verificar si tienes suficiente espacio de almacenamiento disponible para que la compactación pueda proceder. Si la cantidad de espacio disponible que devuelvefreeStorageSizees menor quefreeSpaceTargetMB, 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: Las personas usuarias deben tener la acción de privilegio
compacten el clúster. El rolhostManagerproporciona los privilegios necesarios para ejecutarautoCompact.
Comportamiento
Bloqueo
La compactación en segundo plano provocada por autoCompact aplica el mismo comportamiento de bloqueo que el comando compact. En consecuencia, si llamas autoCompact mientras la compactación en segundo plano está activa, MongoDB devolverá 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 que la compactación de segundo plano actual esté deshabilitada, puedes 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 baja afluencia.
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
Puedes ejecutar la compactación en segundo plano en colecciones e índices que se almacenan en un set de réplicas. Sin embargo, ten en cuenta las siguientes consideraciones:
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.
Las lecturas y guardados están permitidos 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.