ハッシュされたシャードキーインデックスの削除
MongoDB 7.0.3 以降(そして 6.0.12 と 5.0.22)、ハッシュされたシャードキーのインデックスを削除できます。
これにより、ハッシュされたシャードキーでシャーディングされたコレクションのデータ挿入を高速化できます。 mongosync
を使用すると、データの取り込みを高速化することもできます。
このタスクについて
不要なインデックスを削除すると、CRUD 操作が高速化されます。 各 CRUD 操作では、ドキュメントに関連するすべてのインデックスを更新する必要があります。 1 つのインデックスを削除すると、すべての CRUD 操作が高速化されます。
ハッシュされたシャードキー インデックスを削除すると、サーバーはそのコレクションのバランシングを無効にし、コレクションを今後のバランシング ラウンドから除外します。 コレクションをバランシング ラウンドに再度含めるには、シャードキー インデックスを再作成する必要があります。
重要
シャードキーでハッシュされていないインデックスをサポートしている場合にのみ、コレクションからハッシュされたシャードキーハッシュされたシャードキーインデックスを削除する必要があります。 サポートされている非ハッシュインデックスが シャードキー に存在しない場合、シャードキーシャードキーでフィルタリングするクエリは コレクションスキャンを実行します。コレクションに存在するインデックスを確認するには、db.collection.getIndexes()
を使用します。
手順
コレクション内に孤立したドキュメントがないことを確認する
MongoDB 6.0.3 以降では、 $shardedDataDistribution
ステージを使用して集計を実行し、孤立したドキュメントが残っていないことを確認できます。
db.aggregate([ { $shardedDataDistribution: {} }, { $match: { "ns": "<database>.<collection>" } } ])
$shardedDataDistribution
には、次のような出力があります。
[ { "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 } ] } ]
クラスター内の各シャードで"numOrphanedDocs"
が0
であることを確認します。