moveRange
定義
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
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 waitForDelete: <bool>, // optional writeConcern: <write concern>, // optional secondaryThrottle: <bool> // optional } )
コマンドフィールド
このコマンドは、次のフィールドを使用します。
フィールド | タイプ | 説明 |
---|---|---|
toShard | string | 受信者シャードの ID。 |
min | キー | 移動する範囲の最小キー。 |
max | キー | 任意。 移動する範囲の最大キー。
|
ブール値 | 任意。 コマンドが 移行するには大きすぎる範囲を移動できるかどうかを決定するフラグです。 その範囲にはジャンボ というラベルが付いている場合と付いていない場合があります。
デフォルトは 警告:
このオプションを指定すると、シャードは、設定された チャンク サイズ よりも大きい場合でも、チャンクを移行します。 移行中は、コレクションは使用できなくなります。 この長いブロッキング期間なしでこれらの大きなチャンクを移行するには、代わりに「サイズ制限を超えるバランス範囲」を参照してください。 | |
writeConcern | ドキュメント | |
secondaryThrottle | ブール値 | 任意。
詳細については、「セカンダリ スロットル 」を参照してください。 |
範囲移行セクションでは、範囲が MongoDB 上のシャード間で範囲がどのように移動されるかについて説明します。
Considerations
次のようなシナリオでのみmoveRange
を使用してください。
データの初期取り込み
大規模な一括インポート操作
ほとんどの場合、バランサーがシャーディングされたクラスターに範囲を作成し、範囲を作成できるようにします。
例
次の例では、次の内容を含む コレクションを使用します。
シャードキー
x
128MB の チャンク サイズ に設定
境界のあるチャンク:
[x: 0, x: 100)
と の両方を指定min
max
次の表は、 min
とmax
をさまざまな値に設定した結果を示しています。
min | max | 結果 |
---|---|---|
0 | 100 | 範囲内のすべてのドキュメントを受信者シャードに移動します。 |
10 | 30 | 3 つのサブ範囲を作成します。
|
0 | 20 | 2 つのサブ範囲を作成します。
|
40 | 100 | 2 つのサブ範囲を作成します。
|
を指定するが、 は指定しないmin
max
次の表は、 min
をさまざまな値に設定した結果を示しています。
min | キー範囲内のデータ量 | 結果 |
---|---|---|
0 | キー x: 0 とx: 100 の間に含まれる 128 MB 未満。 | 範囲内のすべてのドキュメントを受信者シャードに移動します。 |
10 | キー x: 0 とx: 100 の間に含まれる 128 MB 未満。 | 2 つのサブ範囲を作成します。
|
10 | キー x: 10 とx: 30 の間に含まれる 128 MB 。 | 3 つのサブ範囲を作成します。
|