Para comenzar a desfragmentar una colección fragmentada, utilice el
configureCollectionBalancing comando con la opción defragmentCollection establecida en true.
Acerca de esta tarea
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 versiones anteriores a 7.0 | Desfragmente las colecciones solo si experimenta retrasos en las operaciones CRUD cuando el balanceador migra fragmentos o se inicia un nodo. A partir de MongoDB 6.0, el alto tráfico de escritura no debería causar fragmentación. Las migraciones de fragmentos sí la causan. |
Anterior a MongoDB 6.0 | Desfrágmente las colecciones solo si experimenta tiempos más largos de operaciones CRUD durante las actualizaciones de metadatos. Para las versiones de MongoDB anteriores a la 6.0, una colección particionada se fragmenta cuando el tamaño de la colección crece significativamente debido a múltiples 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.
Puedes usar tu propia colección particionada y base de datos en el procedimiento.
Antes de comenzar
Conecta mongos.
Procedimiento
Asegúrate de que la desfragmentación haya comenzado
Asegúrate de que ok esté 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 }) }
Próximos pasos
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.
Obtén más información
Imprimir estado de la partición, consulte
db.printShardingStatus()Recuperar detalles del estado del fragmento, consulte
sh.status()Para ver los campos de la colección de estado de partición, consulte colección particionada
Ver instancias activas de mongos, ver Instancias activas
mongosMonitorear fragmentos usando MongoDB Atlas, ver Revisar los clústeres sharded