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

Eliminar um índice de chave de fragmento com hash

Nesta página

  • Sobre esta tarefa
  • Passos
  • Saiba mais

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 collection fragmentadas com uma chave de fragmento com hash. Ele também pode acelerar a ingestão de dados ao usar mongosync.

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

Quando você descarta uma chave de fragmento com hash, o servidor desabilita o balanceamento para essa collection e exclui a collection de futuras rodadas de balanceamento. Para incluir a collection nas rodadas de balanceamento mais uma vez, você deve recriar o índice da chave de fragmento.

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 não resta nenhum documento órfão:

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

Limpar bandeira jumbo