Inicie a desfragmentação de uma coleção fragmentada
Para iniciar a desfragmentação de uma collection fragmentada, use o comando configureCollectionBalancing
com a opção defragmentCollection
definida como true
.
Sobre esta tarefa
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.
Antes de começar
Conecte-se a mongos
.
Procedimento
Verifique se a desfragmentação foi iniciada
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 }) }
Próximos passos
Você pode monitorar o progresso da desfragmentação da coleção. Para obter detalhes, consulte Monitorar a desfragmentação de uma coleção fragmentada.
Saiba mais
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
ativasMonitore fragmentos usando o MongoDB Atlas, consulte Analisar clusters fragmentados