Learn the "why" behind slow queries and how to fix them in our 2-Part Webinar.
Register now >
Docs Menu
Docs Home
/ /

autoCompact (comando de base de datos)

autoCompact

Nuevo en la versión 8.0.

Habilita o deshabilita el fondo 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 en segundo plano solo se ejecuta 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 compacta mientras runOnce es false, MongoDB omite temporalmente esa colección y continúa compactando las colecciones restantes. MongoDB intenta compactar la colección fallida de nuevo después de aproximadamente una hora.

Para clústeres que aplican autenticación:

  • MongoDB Atlas: los usuarios deben tener el rol autoCompact integrado.

  • 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 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.

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 principal 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 instancias. En un entorno fragmentado,mongod ejecute autoCompact en cada fragmento por separado.

No se puede ejecutar autoCompact contra una instancia de mongos.

Volver

Administración

En esta página