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

Inicie 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 iniciar a desfragmentação de uma collection fragmentada, use o comando configureCollectionBalancing com a opção defragmentCollection definida como true.

A fragmentação é onde os dados de uma coleção fragmentada são divididos em um número desnecessariamente grande de pequenos blocos. Isso pode aumentar os tempos de operação das operações CRUD executadas nessa coleção. A desfragmentação reduz o número de chunks mesclando chunks menores em maiores, resultando em tempos de operação CRUD mais baixos.

Se os tempos de operação CRUD forem aceitáveis, você não precisará desfragmentar as coleções.

A tabela a seguir resume as informações de desfragmentação para várias versões MongoDB .

Versão do MongoDB
Descrição
MongoDB 7.0 e posterior
Os chunks são mesclados automaticamente. As melhorias de desempenho da desfragmentação de uma collection no MongoDB 7.0 são menores em comparação com o MongoDB 6.0. Normalmente, você não precisa desfragmentar coleções começando no MongoDB 7.0.
MongoDB 6.0 e anterior a 7.0

Só desfragmente coleções se os tempos de operações CRUD estiverem mais longos quando a migração das partes ou dos nós começar.

A partir do MongoDB 6.0, o alto tráfego de gravação não deve causar fragmentação. Migrações de partes causam fragmentação.

Mais cedo do que MongoDB 6.0
Desfragmente coleções somente se você enfrentar tempos de operação CRUD mais longos durante atualizações de metadados. Para versões do MongoDB anteriores a 6.0, uma coleção fragmentada torna-se fragmentada quando o tamanho da coleção aumenta significativamente devido a muitas operações de inserção ou atualização.

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

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

Conecte-se a mongos.

1

Executar:

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

Certifique-se de que ok esteja 1 na saída do comando, o que indica que a execução do comando foi bem-sucedida:

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

Você pode monitorar o progresso da desfragmentação da coleção. Para obter detalhes, consulte Monitorar a desfragmentação de uma coleção fragmentada.

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

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

  • Para saber mais sobre campos de coleção de status de fragmentação, consulte a página Coleção fragmentada

  • Consulte instâncias ativas do mongos, consulte Instâncias mongos ativas

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

Voltar

Coleções fragmentadas de desfragmento