定義
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
注意
このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
このコマンドの構文は、次のとおりです。
db.adminCommand( { configureCollectionBalancing: "<db>.<collection>", chunkSize: <num>, defragmentCollection: <bool>, enableAutoMerger: <bool>, enableBalancing: <bool> } )
コマンドフィールド
configureCollectionBalancing には、次のフィールドがあります。
フィールド | タイプ | 必要性 | 説明 |
|---|---|---|---|
| string | 必須 | 設定するデータベースとシャーディングされたコレクションの名前。 |
| integer | 任意 | コレクションの チャンク サイズ を MiB 単位で設定します。 推奨サイズは 256、512、またはそれより大きいです。 デフォルトの動作の詳細については、「 chunkSize が指定されていない場合のデフォルトの動作 」を参照してください。 |
| ブール値 | 任意 | バランサーにコレクションをデフラグさせます。 デフォルトは |
| ブール値 | 任意 | AutoMerger がこのコレクションを考慮するかどうかを設定します。デフォルトは |
| ブール値 | 任意 | バランサー がコレクションで動作するかどうかを設定します。 バージョン8.0.10の新機能。 |
詳細については、「チャンクを使用したデータのパーティショニング 」を参照してください。
チャンクのデフラグ、スロットリング時間パラメータを構成するには、 chunkDefragmentationThrottlingMSを参照してください。
シャーディングされたコレクションのデフラグについて詳しくは、「シャーディングされたコレクションのデフラグ」をご覧ください。
動作
chunkSize が指定されていない場合のデフォルトの動作
コレクションにchunkSizeを指定せず、過去にカスタム サイズが設定されていない場合、グローバルのデフォルトchunkSizeがバランシングに使用されます。
chunkSize を指定: 0
configureCollectionBalancingをchunkSize: 0と併用すると、コレクションごとのchunkSizeがリセットされ、グローバルのデフォルトchunkSizeがバランシングに使用されます。
デフォルトのchunkSizeの構成の詳細については、「シャーディングされたクラスターの範囲サイズの変更 」を参照してください。
enableAutoMerger が指定されていない場合のデフォルトの動作
コレクションにenableAutoMergerを指定せず、カスタムの自動マージ動作が過去に設定されていない場合は、デフォルトでtrueになり、AutoMerger によって考慮されます。
例
チャンク サイズの設定
シャーディングされたコレクションのチャンク サイズを変更するには、 chunkSizeオプションを使用します。
db.adminCommand( { configureCollectionBalancing: "test.students", chunkSize: 256 } )
特定のコレクションのチャンク サイズを変更するには、次のコマンドを使用します。
警告
デフォルトでは、チャンク内のドキュメント数が、構成されたチャンク サイズを平均ドキュメント サイズで割った結果の2倍を超える場合、MongoDB はチャンクを移動できません。
平均ドキュメントサイズを見つけるには、 db.collection.stats()メソッドの出力のavgObjSizeフィールドを参照してください。
詳細については、「範囲サイズ 」を参照してください。
コレクションのデフラグ
警告
MongoDB 6.0.0 から 6.0.3 および MongoDB 6.1.0 のシャーディングされたコレクションのデフラグには、 defragmentCollectionを使用することは推奨しません。 を 6.1.1 に設定し、 これらのリリースのデフラグ プロセスにより、データベースとコレクションが長期間にわたって使用できなくなる可能性があるためです。
シャーディングされたコレクションをデフラグするようにバランサーに指示するには、 defragmentCollectionオプションを使用します。
db.adminCommand( { configureCollectionBalancing: "test.students", defragmentCollection: true } )
このコマンドを使用して、バランサーにシャーディングされたコレクションをデフラグします。 チャンクのデフラグ プロセスをモニターするには、 balancerCollectionStatusコマンドを使用します。
シャーディングされたコレクションのデフラグについて詳しくは、「シャーディングされたコレクションのデフラグ 」をご覧ください。
コレクションの再構成とデフラグ
チャンク サイズを更新中にシャーディングされたコレクションをデフラグするには、 defragmentCollectionオプションとchunkSizeオプションを併用します。
db.adminCommand( { configureCollectionBalancing: "test.students", chunkSize: 512, defragmentCollection: true } )
コレクションで AutoMerger を無効にする
コレクションの AutoMerger を明示的に無効にするには、 enableAutoMergerオプションをfalseに設定します。
db.adminCommand( { configureCollectionBalancing: "test.students", enableAutoMerger: false } )
コレクションでのバランシングの無効化
コレクションのバランサーを明示的に無効にするには、enableBalancing オプションを false に設定します。
db.adminCommand( { configureCollectionBalancing: "test.students", enableBalancing: false } )