シャーディングされたコレクションのデフラグの開始
シャーディングされたコレクションのデフラグを開始するには、 defragmentCollection
オプションをtrue
に設定して、 configureCollectionBalancing
コマンドを使用します。
このタスクについて
フラグメント化とは、シャーディングされたコレクションのデータが、不必要に多数の小さなチャンクに分割されることです。 これにより、そのコレクションで実行される CRUD 操作の操作時間が増加する可能性があります。 デフラグでは、小さなチャンクが大きなチャンクにマージされ、チャンクの数が減り、CRUD 操作時間が短縮されます。
CRUD 操作時間が許容される場合は、コレクションをデフラグする必要はありません。
以下の表には、さまざまな MongoDB バージョンのデフラグ情報をまとめています。
MongoDB バージョン | 説明 |
---|---|
MongoDB 7.0以降 | チャンクは自動的にマージされます。 MongoDB 7.0でコレクションをデフラグすることによるパフォーマンスの改善は、 MongoDB 6.0と比較して低くなります。 通常、 MongoDB 7.0以降のコレクションをデフラグする必要はありません。 |
MongoDB 6.0 、および7.0より前 | バランサー がチャンクを移行するとき、またはノードの起動時に CRUD 操作の遅延が発生した場合にのみ、コレクションをデフラグします。 MongoDB 6.0 以降では、書込みトラフィックが多い場合でもフラグメント化は発生しません。 チャンクの移行により断片化が発生します。 |
MongoDB 6.0 より前 | メタデータの更新中に CRUD 操作時間が長くなった場合にのみ、コレクションをデフラグします。 MongoDB のバージョンが6.0より前の場合、挿入またはアップデート操作が多いためにコレクション サイズが大幅に大きくなると、シャーディングされたコレクションがフラグメント化されます。 |
このタスクの手順では、 test
という名前のデータベース内のordersShardedCollection
という名前のシャーディングされたコレクションの例を使用します。
手順では、独自のシャーディングされたコレクションとデータベースを使用できます。
始める前に
手順
デフラグが開始されたことを確認する
コマンド出力で、 ok
が1
であることを確認します。これは、コマンドの実行が成功したことを示しています。
{ 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 }) }
次のステップ
コレクションのデフラグの進行状況を監視できます。 詳細については、「シャーディングされたコレクションのデフラグの監視 」を参照してください。
詳細
シャードの状態を出力します。次を参照してください:
db.printShardingStatus()
シャード ステータスの詳細を取得します。次を参照してください。
sh.status()
シャード ステータス コレクション フィールドの表示。「シャーディングされたコレクション 」を参照
アクティブな mongos インスタンスを確認するには、「アクティブな
mongos
インスタンス」を参照してくださいMongoDB Atlas を使用してシャードをモニタリングする( シャーディングされたクラスターの確認) を参照してください