Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

シャーディングされたコレクションのデフラグの開始

項目一覧

  • このタスクについて
  • 始める前に
  • 手順
  • 次のステップ
  • 詳細

シャーディングされたコレクションのデフラグを開始するには、 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という名前のシャーディングされたコレクションの例を使用します。

手順では、独自のシャーディングされたコレクションとデータベースを使用できます。

mongosに接続します。

1

実行:

db.adminCommand(
{
configureCollectionBalancing: "test.ordersShardedCollection",
defragmentCollection: true
}
)
2

コマンド出力で、 ok1であることを確認します。これは、コマンドの実行が成功したことを示しています。

{
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 を使用してシャードをモニタリングする( シャーディングされたクラスターの確認) を参照してください

戻る

シャーディングされたコレクションのデフラグ