Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

Monitore a desfragmentação de uma coleção fragmentada

Nesta página

  • Sobre esta tarefa
  • Antes de começar
  • Procedimento
  • Próximos passos
  • Saiba mais

Para monitorar a desfragmentação de uma collection fragmentada, use o comando balancerCollectionStatus .

Você pode ver o estado de desfragmentação atual e o número de chunks restantes para processar. Isso mostra o progresso da desfragmentação.

A desfragmentação usa as seguintes fases para reduzir o número de blocos em uma collection e melhorar o desempenho:

  1. Mesclar chunks no mesmo shard que podem ser mesclados.

  2. Migre chunks menores para outros shards. Um pequeno chunk é aquele que contém dados menores que 25% da configuração chunkSize .

  3. Mesclar os chunks restantes no mesmo shard que pode ser mesclado.

O procedimento nesta tarefa utiliza uma coleção fragmentada de exemplo denominada ordersShardedCollection em um banco de dados denominado test.

Você pode usar sua própria coleção fragmentada e banco de dados no procedimento.

No procedimento para esta tarefa, você monitora as fases e acompanha o progresso da desfragmentação.

1

Executar:

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

O comando anterior retorna um documento com informações sobre o status da desfragmentação, a fase atual e o trabalho de desfragmentação restante. Por exemplo:

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

A tabela a seguir descreve os campos do documento.

Campo
Tipo
Descrição
balancerCompliant
Boolean
false se os chunks da collection precisarem ser movidos. Caso contrário, true.
firstComplianceViolation
String
Indica a razão pela qual os chunks do namespace devem ser movidos ou mesclados. Somente retornado se balancerCompliant for false.
details
Objeto
Informações adicionais sobre o estado de desfragmentação atual. Somente retornado se firstComplianceViolation for defragmentingChunks.
currentPhase
String

Fase de desfragmentação atual:

  • Para a fase um, currentPhase é mergeAndMeasureChunks.

    A fase um mescla partes adjacentes localizadas no mesmo fragmento e calcula o tamanho dos dados para esses partes.

  • Para a fase dois, currentPhase é moveAndMergeChunks.

    Após a conclusão da fase um, pode haver alguns pequenos pedaços restantes. A fase dois migra esses pequenos chunks para outros shards e mescla os chunks nesses shards.

remainingChunksToProcess
Inteiro
Número de chunks restantes para processar na fase atual.

Para obter informações adicionais sobre os campos de documento retornados, consulte o documento de saída de status da collection do balancer.

3

Após a conclusão da desfragmentação, o comando retorna:

  • balancerCompliant: true se a sua coleção estiver balanceada.

  • balancerCompliant: false com firstComplianceViolation definido para uma string diferente de defragmentingChunks se sua collection não estiver balanceada.

Exemplo de saída para uma collection balanceada após a conclusão da desfragmentação:

{
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 })
}

Se a desfragmentação ainda não tiver sido concluída, você poderá interrompê-la. Para obter detalhes, consulte Parar de desfragmentar uma coleção fragmentada.

  • Status do shard da impressão, consulte db.printShardingStatus()

  • Recuperar detalhes de status do shard, consulte sh.status()

  • Visualize os campos de coleção de status do fragmento, consulte Coleção fragmentada

  • Veja instâncias ativas de mongos, consulte Instâncias mongos ativas

  • Monitore fragmentos usando o MongoDB Atlas, consulte Analisar clusters fragmentados

← Inicie a desfragmentação de uma coleção fragmentada