Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

autoCompact (comando de base de datos)

autoCompact

Nuevo en la versión 8.0.

Activa o desactiva el segundo plano compactación. Cuando está habilitado, autoCompact recorre 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 $collStats con la opción storageStats: {} para verificar si tienes suficiente espacio de almacenamiento disponible para que la compactación pueda proceder. Si la cantidad de espacio disponible que devuelve freeStorageSize es menor que freeSpaceTargetMB, la compactación en segundo plano no tiene efecto.

El comando tiene la siguiente sintaxis:

db.runCommand(
{
autoCompact: <boolean>,
freeSpaceTargetMB: <int>, // Optional
runOnce: <boolean>, // Optional
}
)

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.

El comando puede aceptar los siguientes campos opcionales:

Campo
Tipo
Descripción

freeSpaceTargetMB

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

runOnce

booleano

opcional. Si runOnce se establece en true, la compactación de segundo plano se ejecuta solo una vez en cada colección del nodo.

Si runOnce se establece en false, la compactación en segundo plano se ejecuta continuamente en todas las colecciones de la base de datos. Si una colección no se puede compactar mientras que runOnce está false, MongoDB omite temporalmente esa colección y continúa compactando las colecciones restantes. MongoDB intenta compactar la colección fallida nuevamente después de aproximadamente una hora.

Para clústeres que aplican la autenticación:

  • MongoDB Atlas: Los usuarios deben tener el autoCompact rol incorporado.

  • Implementaciones autogestionadas: Las personas usuarias deben tener la acción de privilegio compact en el clúster. El rol hostManager proporciona los privilegios necesarios para ejecutar autoCompact.

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 necesitas reiniciar autoCompact o ejecutarlo de nuevo con diferentes opciones, primero debes 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.

Si existe un oplog, MongoDB lo excluye de la compactación en segundo plano.

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.

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 primario no replica el comando autoCompact a 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.

autoCompact solo se aplica a las instancias de mongod. En un entorno particionado, ejecuta autoCompact en cada partición por separado.

No se puede ejecutar autoCompact contra una instancia de mongos.

Volver

Administración

En esta página