Docs Menu
Docs Home
/ /

Comenzar a desfragmentar una colección fragmentada

Para comenzar a desfragmentar una colección fragmentada, utilice el configureCollectionBalancingComando con la defragmentCollection opción establecida true en.

La fragmentación consiste en dividir los datos de una colección fragmentada en una cantidad innecesariamente grande de fragmentos pequeños. Esto puede aumentar la duración de las operaciones CRUD que se ejecutan en esa colección. La desfragmentación reduce la cantidad de fragmentos al fusionarlos en fragmentos más grandes, lo que resulta en tiempos de operación CRUD más cortos.

Si los tiempos de operación CRUD son aceptables, no es necesario desfragmentar las colecciones.

La siguiente tabla resume la información de desfragmentación para varias versiones de MongoDB.

Versión de MongoDB
Descripción

MongoDB 7.0 y versiones posteriores

Los fragmentos se fusionan automáticamente. Las mejoras de rendimiento al desfragmentar una colección en MongoDB 7.0 son menores que en MongoDB 6.0. Normalmente, no es necesario desfragmentar colecciones a partir de MongoDB 7.0.

MongoDB 6.0 y anteriores a 7.0

Desfragmente las colecciones solo si experimenta demoras en la operación CRUD cuando el balanceador migra fragmentos o se inicia un nodo.

A partir de MongoDB 6.0, el alto tráfico de escritura no debe causar fragmentación. Las migraciones de fragmentos causan fragmentación.

Antes de MongoDB 6.0

Desfragmente las colecciones solo si experimenta tiempos de operación CRUD más largos durante las actualizaciones de metadatos. En versiones de MongoDB anteriores a 6.0, una colección fragmentada se fragmenta cuando su tamaño aumenta significativamente debido a numerosas operaciones de inserción o actualización.

El procedimiento de esta tarea utiliza una colección fragmentada de ejemplo denominada ordersShardedCollection en una base de datos denominada test.

Puede utilizar su propia colección fragmentada y base de datos en el procedimiento.

Conectarse mongos a.

1

Ejecuta:

db.adminCommand(
{
configureCollectionBalancing: "test.ordersShardedCollection",
defragmentCollection: true
}
)
2

Asegúrese de que ok sea 1 en la salida del comando, lo que indica que la ejecución del comando fue exitosa:

{
ok: 1,
'$clusterTime': {
clusterTime: Timestamp({ t: 1677616966, i: 8 }),
signature: {
hash: Binary(Buffer.from("0000000000000000000000000000000000000000", "hex"), 0),
keyId: Long("0")
}
},
operationTime: Timestamp({ t: 1677616966, i: 8 })
}

Puedes supervisar el progreso de la desfragmentación de la colección. Para obtener más detalles, consulte Supervisión de la desfragmentación de una colección particionada.

  • Imprimir el estado del fragmento, ver db.printShardingStatus()

  • Recuperar detalles del estado del fragmento, consulte sh.status()

  • Ver los campos de recopilación de estado de fragmentos, consulte Colección fragmentada

  • Ver instancias activas de mongos, ver Instancias activas mongos

  • Monitorear fragmentos usando MongoDB Atlas, ver Revisar clústeres fragmentados

Volver

Desfragmentar colecciones fragmentadas

En esta página