Docs Menu
Docs Home
/ /
Administración

compact

compact

Reescribe y desfragmenta todos los datos e índices de una colección. Bases de datos deWiredTiger: este comando liberará espacio en disco innecesario para el sistema operativo.

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 M,0 M2 y5 M. Para obtener más información, consulte 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 tiene la siguiente sintaxis:

{ compact: <collection name> }

El comando toma los siguientes campos:

Nota

Comenzando en MongoDB 4.2

MongoDB remueve el motor de almacenamiento MMAPv1 y las opciones específicas de MMAPv1 paddingFactor, paddingBytes, preservePadding para compact.

Campo
Tipo
Descripción

compact

string

El nombre de la colección.

force

flag

Opcional. A partir de v,4.4 si se especifica, obliga a a ejecutarse en el servidor compact principal de un conjunto de réplicas. Antes de v.,4 4este campo booleano permitía compact que se ejecutara en el servidor principal de un conjunto de réplicas si el valor era true y devolvía un error al ejecutarse en un servidor principal si el valor false era, ya que el comando bloqueaba todas las demás operaciones.

A partir de4.4 v, compact no bloquea las operaciones CRUD de MongoDB en la base de datos que está compactando.

comment

any

Opcional. Un comentario proporcionado por el usuario para adjuntar a este comando. Una vez configurado, este comentario aparece junto a los registros de este comando en las siguientes ubicaciones:

Un comentario puede ser de cualquier tipo BSON válido (string, objeto, arreglo, etc.).

Nuevo en la versión 4.4.

Para los clústeres que exigen autenticación, debe autenticarse como usuario con el compact privilegio en la colección de destino. El rol proporciona los dbAdmin compact privilegios necesarios para ejecutar en colecciones que no pertenecen al sistema.

Para obtener más información sobre la configuración del documento resource, consulta Documento de recursos en implementaciones autogestionadas.

Para agregar el roldbAdmino el rol personalizado a un usuario existente, utilicedb.grantRolesToUser()udb.updateUser(). La siguiente operación otorga el rol personalizado compact al usuario myCompactUser en la base de datos admin:

use admin
db.grantRolesToUser("myCompactUser", [ "dbAdmin" | "myCustomCompactRole" ] )

Para agregar el dbAdmin o el rol personalizado a un nuevo usuario, especifique el rol en el arreglo roles del método db.createUser() al crear el usuario.

use admin
db.createUser(
{
user: "myCompactUser",
pwd: "myCompactUserPassword",
roles: [
{ role: "dbAdmin", db: "<database>" } | "myCustomCompactRole"
]
}
)

El comportamiento de bloqueo depende de la versión.

Versión

Comportamiento de bloqueo

4.4

Publicar 4.4.17 y 5.0.12

Para ejecutar compact en un conjunto de réplicas, consulte Conjuntos de réplicas para obtener consideraciones adicionales.

Para comprobar el progreso de la operación compact, supervise la entrada de registro mongod o ejecute db.currentOp() desde otra instancia de shell.

Si terminas compact con el método db.killOp() o reinicias el servidor antes de que finalice la operación, compact termina y puede fallar en su intento de liberar espacio en disco al sistema operativo.

Para ver cómo cambia el espacio de almacenamiento de la colección, ejecute el collStats comando antes y después de la compactación.

En WiredTiger, compact intenta reducir el espacio de almacenamiento necesario para los datos e índices de una colección, liberando así espacio de disco innecesario para el sistema operativo. La eficacia de esta operación depende de la carga de trabajo y no se puede recuperar espacio de disco. Este comando es útil si ha eliminado una gran cantidad de datos de la colección y no planea reemplazarlos.

compact Puede requerir espacio en disco adicional para ejecutarse en bases de datos de WiredTiger.

Puede usar compact en colecciones e índices que se almacenan en un set de réplicas; sin embargo, hay algunas consideraciones importantes:

  • El nodo primario no replica el comando compact a los nodos secundarios.

  • Deberías ejecutar compact en nodos secundarios siempre que sea posible. Si no puedes ejecutar compact en los nodos secundarios, consulta la opción forzar.

  • A partir de MongoDB 5.0.12:

    • Un nodo secundario puede replicarse mientras compact se está ejecutando.

    • Se permiten las operaciones de lectura.

Para ejecutar compact en un clúster

1

Ejecute compact en uno de los nodos secundarios. Cuando compact termine, repita la operación en cada uno de los secundarios restantes, uno por uno.

2

Para bajar el nodo primario actual y activar una elección, utilice el método rs.stepDown(). Para nominar un nodo secundario en particular, ajuste la prioridad del nodo.

3

Después de retirar el nodo primario antiguo, este se convierte en un nodo secundario. Ejecute compact en el nodo primario antiguo.

El comportamiento de bloqueo en los nodos secundarios es específico de cada versión.

Versión

Comportamiento de bloqueo

4.4

  • No es posible ninguna replicación.

  • No se permiten lecturas.

Publicar 4.4.17 y 5.0.12

  • Un nodo secundario puede replicarse mientras compact se está ejecutando.

  • Lecturas permitidas.

Mientras se ejecuta el comando compact, el set de réplicas permanece en un estado de SECONDARY.

Para obtener más información sobre los estados del set de réplicas, consulte Estados del nodo del set de réplicas.

Para el mantenimiento y la disponibilidad de los Sets de réplicas, consulta Realizar mantenimiento de los miembros del Set de réplicas autogestionados.

compact solo se aplica a instancias. En mongod compact un entorno fragmentado, ejecute en cada fragmento por separado como operación de mantenimiento.

No se puede emitir compact contra una mongos instancia.

mongod reconstruye todos los índices en paralelo después de la compact operación.

Volver

collMod

En esta página