Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Menu Docs
Página inicial do Docs
/ /

Eliminar um índice de chave de fragmento com hash

A partir do MongoDB 7.0.3 (e 6.0.12 and 5.0.22), você pode descartar o índice de uma hashed shard key.

Isso pode acelerar a inserção de dados para collections fragmentadas com uma hashed shard key.

Eliminar um índice desnecessário pode acelerar operações CRUD. Cada operação CRUD precisa atualizar todos os índices relacionados a um documento. Remover um índice pode aumentar a velocidade de todas as operações CRUD.

Importante

Ao descartar um índice de chave de fragmento com hash , considere o seguinte:

  • O servidor desativa o balanceamento para sua coleção e exclui a coleção de futuras rodadas de balanceamento. Para incluir a collection em futuras rodadas de balanceamento, recrie o índice da chave de shard.

  • Quando você descarta o índice da chave de shard, o excludente de intervalo não limpa nenhum órfão restante em sua coleção. Você deve confirmar que não existem documentos órfãos em sua collection antes de descartar o índice da chave de fragmento com hash . Consulte o procedimento abaixo para saber como confirmar que não há documentos órfãos em sua coleção.

1

Execute o seguinte comando para parar o balanceador:

sh.stopBalancer()

Você só pode executar sh.stopBalancer() em mongos. sh.stopBalancer() produz um erro se for executado em mongod.

2

A partir do MongoDB 6.0.3, você pode executar uma agregação usando o estágio $shardedDataDistribution para confirmar que nenhum documento órfão permanece:

db.aggregate([
{ $shardedDataDistribution: {} },
{ $match: { "ns": "<database>.<collection>" } }
])

$shardedDataDistribution tem saída semelhante à seguinte:

[
{
"ns": "test.names",
"shards": [
{
"shardName": "shard-1",
"numOrphanedDocs": 0,
"numOwnedDocuments": 6,
"ownedSizeBytes": 366,
"orphanedSizeBytes": 0
},
{
"shardName": "shard-2",
"numOrphanedDocs": 0,
"numOwnedDocuments": 6,
"ownedSizeBytes": 366,
"orphanedSizeBytes": 0
}
]
}
]

Certifique-se de que "numOrphanedDocs" seja 0 para cada shard no cluster.

3

Execute o seguinte comando para eliminar o índice:

db.collection.dropIndex("<index name>")
4

Execute o seguinte comando para reiniciar o balanceador no cluster:

sh.startBalancer()

Voltar

Fragmentação em hash

Nesta página