정의
mergeAllChunksOnShardmergeAllChunksOnShardfinds and merges all mergeable chunks that a shard owns for a given collection.
호환성
이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
- MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
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 */ } )
명령 필드
이 명령은 다음 필드를 사용합니다.
필드 | 유형 | 필요성 | 설명 |
|---|---|---|---|
| 문자열 | 필수 사항 | 컬렉션의 이름입니다. |
| 문자열 | 필수 사항 | 샤드의 이름입니다. |
| integer | 옵션 | 병합할 최대 청크 수입니다. |
행동
mergeAllChunksOnShard 동일한 샤드에 있는 collection의 병합 가능한 모든 청크를 찾아서 병합합니다. 동일한 collection에 있는 두 개 이상의 청크는 다음 조건을 모두 충족할 때 병합 할 수 있습니다.
동일한 샤드 가 소유합니다.
이는 점보 청크가 아닙니다.
jumbo청크는 마이그레이션에 참여할 수 없으므로 병합할 수 없습니다.트랜잭션 및 스냅샷 읽기를 중단하지 않고 기록을 안전하게 삭제할 수 있습니다.
청크와 관련된 마지막 마이그레이션은 적어도
minSnapshotHistoryWindowInSeconds값만큼 이전에 발생했습니다.청크와 관련된 마지막 마이그레이션은 적어도
transactionLifetimeLimitSeconds값만큼 이전에 발생했습니다.
예시
This example assumes that history is empty for all chunks and all chunks are non-jumbo. Since both conditions are true, all contiguous intervals on the same shard are mergeable.
설정
이 청크는 샤드 키가 x인 coll(이)라는 컬렉션에 속합니다. 총 9개의 청크가 있습니다.
청크 ID | Min | 최대 | 샤드 |
|---|---|---|---|
a |
|
| 샤드0 |
B |
|
| 샤드0 |
C |
|
| 샤드0 |
D |
|
| 샤드0 |
E |
|
| Shard1 |
F |
|
| Shard1 |
G |
|
| 샤드0 |
h |
|
| 샤드0 |
i |
|
| Shard1 |
단계
결과
이러한 명령이 완료되면 인접한 청크가 병합됩니다. 총 청크는 원래 9개가 아니라 4개 있습니다.
청크 ID | Min | 최대 | 샤드 |
|---|---|---|---|
A-B-C-D |
|
| 샤드0 |
E-F |
|
| Shard1 |
G-H |
|
| 샤드0 |
i |
|
| Shard1 |