定義
moveRange
バージョン 6.0 で追加。
シャード 間で の範囲を移動します。
moveRange
mongos
管理データベースを使用しながら、 インスタンスで コマンドを実行します。Tip
mongosh
では、このコマンドはsh.moveRange()
ヘルパー メソッドを通じて実行することもできます。ヘルパー メソッドは
mongosh
ユーザーには便利ですが、データベースコマンドと同じレベルの情報は返されない可能性があります。 便宜上必要ない場合、または追加の戻りフィールドが必要な場合は、 データベースコマンドを使用します。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
注意
このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
このコマンドの構文は、次のとおりです。
db.adminCommand( { moveRange: <namespace>, toShard: <ID of the recipient shard>, min: <min key of the range to move>, max: <max key of the range to move>, // optional forceJumbo: <bool>, // optional writeConcern: <write concern>, // optional secondaryThrottle: <bool> // optional } )
コマンドフィールド
このコマンドは、次のフィールドを使用します。
フィールド | タイプ | 説明 |
---|---|---|
| string | 受信者シャードの ID。 |
| キー | 移動する範囲の最小キー。 |
| キー | 任意。 移動する範囲の最大キー。
|
ブール値 | 任意。 コマンドが 移行するには大きすぎる範囲を移動できるかどうかを決定するフラグです。 その範囲にはジャンボ というラベルが付いている場合と付いていない場合があります。
デフォルトは 警告:
このオプションを指定すると、シャードは、設定された チャンク サイズ よりも大きい場合でも、チャンクを移行します。 コレクションは、 移行中は書き込みができなくなります。 この長いブロッキング期間なしでこれらの大きなチャンクを移行するには、代わりに「サイズ制限を超えるバランス範囲」を参照してください。 | |
| ドキュメント | |
| ブール値 | 任意。
詳細については、「セカンダリ スロットル 」を参照してください。 |
範囲移行セクションでは、範囲が MongoDB 上のシャード間で範囲がどのように移動されるかについて説明します。
Considerations
次のようなシナリオでのみmoveRange
を使用してください。
データの初期取り込み
大規模な一括インポート操作
ほとんどの場合、バランサーがシャーディングされたクラスターに範囲を作成し、範囲を作成できるようにします。
例
次の例では、次の内容を含む コレクションを使用します。
シャードキー
x
128MB の チャンク サイズ に設定
境界のあるチャンク:
[x: 0, x: 100)
と の両方を指定min
max
次の表は、 min
とmax
をさまざまな値に設定した結果を示しています。
min | max | 結果 |
---|---|---|
|
| 範囲内のすべてのドキュメントを受信者シャードに移動します。 |
|
| 3 つのサブ範囲を作成します。
|
|
| 2 つのサブ範囲を作成します。
|
|
| 2 つのサブ範囲を作成します。
|
を指定するが、 は指定しないmin
max
次の表は、 min
をさまざまな値に設定した結果を示しています。
min | キー範囲内のデータ量 | 結果 |
---|---|---|
| キー | 範囲内のすべてのドキュメントを受信者シャードに移動します。 |
| キー | 2 つのサブ範囲を作成します。
|
| キー | 3 つのサブ範囲を作成します。
|