mergeAllChunksOnShard
定義
mergeAllChunksOnShard
mergeAllChunksOnShard
は、特定のコレクションに対してシャーディングが所有するすべてのマージ可能なチャンクを検索してマージします。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
重要
このコマンドはサーバーレスインスタンスではサポートされていません。 詳細については、「サポートされていないコマンド 」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
このコマンドの構文は、次のとおりです。
db.adminCommand( { mergeAllChunksOnShard: <name of the collection>, shard: <name of the shard>, maxNumberOfChunksToMerge: <maximum number of chunks to merge> /* optional */ } )
コマンドフィールド
このコマンドは、次のフィールドを使用します。
フィールド | タイプ | 必要性 | 説明 |
---|---|---|---|
mergeAllChunksOnShard | string | 必須 | コレクション名。 |
shard | string | 必須 | シャードの名前。 |
maxNumberOfChunksToMerge | integer | 任意 | マージするチャンクの最大数。 |
動作
mergeAllChunksOnShard
は、同じシャード上にあるコレクションのすべての マージ可能なチャンク を検索してマージします。 同じコレクション内の 2 つ以上連続するチャンクは、次の条件をすべて満たす場合にマージできます。
同じシャードによって所有されています。
ジャンボチャンクではありません。
jumbo
チャンクは移行に参加できないため、マージできません。トランザクションやスナップショット読み取りを中断することなく、これらの履歴は安全に消去できます。
チャンクを含む最後の移行は、少なくとも
minSnapshotHistoryWindowInSeconds
の値と同じ秒数前に発生しました。チャンクを含む最後の移行は、少なくとも
transactionLifetimeLimitSeconds
の値と同じ秒数前に発生しました。
例
この例では、履歴がすべてのチャンクで空で、すべてのチャンクが非 ジャンボ であることを前提としています。 両方の条件が true であるため、同じシャード上のすべての連続した間隔がマージ可能です。
セットアップ
これらのチャンクは、シャードキーx
coll
持つ という名前のコレクションに属しています。 チャンクは合計 9 個あります。
チャンク ID | Min | Max | シャード |
---|---|---|---|
A | x: 0 | x: 10 | シャード0 |
B | x: 10 | x: 20 | シャード0 |
C | x: 20 | x: 30 | シャード0 |
D | x: 30 | x: 40 | シャード0 |
E | x: 40 | x: 50 | シャード 1 |
F | x: 50 | x: 60 | シャード 1 |
G | x: 60 | x: 70 | シャード0 |
H | x: 70 | x: 80 | シャード0 |
I | x: 80 | x: 90 | シャード 1 |
手順
結果
これらのコマンドが完了すると、連続するチャンクがマージされます。 チャンクは元の 9 つではなく 4 つあります。
チャンク ID | Min | Max | シャード |
---|---|---|---|
ABCD | x: 0 | x: 40 | シャード0 |
FS | x: 40 | x: 60 | シャード 1 |
SH | x: 60 | x: 80 | シャード0 |
I | x: 80 | x: 90 | シャード 1 |