Docs Menu
Docs Home
/ /

Supervisar la desfragmentación de una colección fragmentada

Para supervisar la desfragmentación de una colección fragmentada, utilice el balancerCollectionStatus dominio.

Puedes ver el estado actual de desfragmentación y el número de fragmentos restantes a procesar. Esto te muestra el progreso de la desfragmentación.

La desfragmentación utiliza las siguientes fases para reducir la cantidad de fragmentos de una colección y mejorar el rendimiento:

  1. Fusionar fragmentos en el mismo fragmento que se puedan fusionar.

  2. Migra fragmentos más pequeños a otros fragmentos. Un fragmento pequeño es aquel que contiene menos del 25% de datos de la configuración chunkSize.

  3. Fusionar los fragmentos restantes en el mismo fragmento que se puedan fusionar.

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.

En el procedimiento para esta tarea, usted supervisa las fases y ve el progreso de la desfragmentación.

1

Ejecuta:

db.adminCommand(
{
balancerCollectionStatus: "test.ordersShardedCollection"
}
)
2

El comando anterior devuelve un documento con información sobre el estado de la desfragmentación, la fase actual y el trabajo de desfragmentación restante. Por ejemplo:

{
"balancerCompliant": false,
"firstComplianceViolation": "defragmentingChunks",
"details": {
"currentPhase": "moveAndMergeChunks",
"progress": { "remainingChunksToProcess": 1 }
}
}

La siguiente tabla describe los campos del documento.

Campo
Tipo
Descripción

balancerCompliant

Booleano

false Si se deben mover fragmentos de la colección. De lo contrario, true.

firstComplianceViolation

String

Indica el motivo por el que se deben mover o fusionar los fragmentos del espacio de nombres. Solo se devuelve si balancerCompliant es false.

details

Objeto

Información adicional sobre el estado actual de la desfragmentación. Solo se devuelve si firstComplianceViolation es defragmentingChunks.

currentPhase

String

Fase de desfragmentación actual:

  • Para la fase uno, currentPhase es mergeAndMeasureChunks.

    La primera fase fusiona fragmentos contiguos ubicados en el mismo fragmento y calcula el tamaño de los datos para esos fragmentos.

  • Para la fase dos, currentPhase es moveAndMergeChunks.

    Tras completar la primera fase, es posible que queden fragmentos pequeños. La segunda fase migra esos fragmentos a otros fragmentos y los fusiona.

remainingChunksToProcess

entero

Número de fragmentos restantes para procesar en la fase actual.

Para obtener información adicional sobre los campos del documento devuelto, consulte el documento de salida del estado de recopilación del balanceador.

3

Una vez completada la desfragmentación, el comando devuelve:

  • balancerCompliant: true Si tu colección está equilibrada.

  • balancerCompliant: false con firstComplianceViolation establecido en una cadena distinta de defragmentingChunks si su colección no está equilibrada.

Ejemplo de salida para una colección equilibrada una vez completada la desfragmentación:

{
chunkSize: 0.2,
balancerCompliant: true,
ok: 1,
'$clusterTime': {
clusterTime: Timestamp({ t: 1677543079, i: 1 }),
signature: {
hash: Binary(Buffer.from("0000000000000000000000000000000000000000", "hex"), 0),
keyId: Long("0")
}
},
operationTime: Timestamp({ t: 1677543079, i: 1 })
}

Si la desfragmentación aún no ha finalizado, puede detenerla. Para obtener más información, consulte Detener la desfragmentación de una colección fragmentada.

  • 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

Inicio

En esta página