db.collection.getShardDistribution()
정의
db.collection.getShardDistribution()
중요
Mongo쉬 방법
이 페이지에서는
mongosh
메서드를 설명합니다. 이는 Node.js와 같은 언어별 드라이버에 대한 설명서가 아닙니다.MongoDB API 드라이버의 경우 언어별 MongoDB 드라이버 설명서를 참조하세요.
샤딩된 컬렉션 에 대한 데이터 배포 통계를 출력합니다.
구문
getShardDistribution()
메서드의 형식은 다음과 같습니다.
db.collection.getShardDistribution()
출력
참고
getShardDistribution()
의 동작이 MongoDB Shell 버전 2.3.3에서 변경되었습니다.
MongoDB Shell 버전 2.3.3부터
getShardDistribution()
에는 일반 샤딩된 데이터만 포함되며 고아 문서는 고려되지 않습니다.MongoDB Shell 버전 2.3.3 이전,
getShardDistribution()
은(는) 일반 샤딩된 데이터와 삭제 보류 중인 고아 문서를 모두 고려합니다. 컬렉션 에 고아 문서가 포함되어 있는 경우getShardDistribution()
는 일반 데이터 측면에서 컬렉션 이 균형을 이루고 있더라도 컬렉션 이 불균형 상태임을 나타낼 수 있습니다. 분리된 데이터를 포함하는 샤드 는 다른 샤드에 비해 더 많은 문서와 더 큰 데이터 크기를 갖지만 청크 수는 동일합니다.
샘플 출력
다음은 샤드 컬렉션의 배포에 대한 샘플 출력입니다.
Shard shard01 at shard01/localhost:27018 { data: '38.14MB', docs: 1000003, chunks: 2, 'estimated data per chunk': '19.07B', 'estimated docs per chunk': 500001 } --- Shard shard02 at shard02/localhost:27019 { data: '38.14B', docs: 999999, chunks: 3, 'estimated data per chunk': '12.71B', 'estimated docs per chunk': 333333 } --- Totals { data: '76.29B', docs: 2000002, chunks: 5, 'Shard shard01': [ '50 % data', '50 % docs in cluster', '40B avg obj size on shard' ], 'Shard shard02': [ '49.99 % data', '49.99 % docs in cluster', '40B avg obj size on shard' ] }
출력 필드
Shard shard01 at <host-a> { data: <size-a>, docs: <count-a>, chunks: <number of chunks-a>, 'estimated data per chunk': <size-a>/<number of chunks-a>, 'estimated docs per chunk': <count-a>/<number of chunks-a> } --- Shard shard02 at <host-b> { data: <size-b>, docs: <count-b>, chunks: <number of chunks-b>, 'estimated data per chunk': <size-b>/<number of chunks-b>, 'estimated docs per chunk': <count-b>/<number of chunks-b> } --- Totals { data: <stats.size>, docs: <stats.count>, chunks: <calc total chunks>, Shard shard01: [ <estDataPercent-a> % data, <estDocPercent-a> % docs in cluster, stats.shards[ <shard-a> ].avgObjSize avg obj size on shard ], Shard shard02: [ <estDataPercent-b> % data, <estDocPercent-b> % docs in cluster, stats.shards[ <shard-b> ].avgObjSize avg obj size on shard ] }
출력 정보는 다음과 같이 표시됩니다.
<shard-x>
샤드 이름이 저장된 문자열입니다.<host-x>
호스트 이름이 포함된 문자열입니다.<size-x>
측정 단위를 포함하여 데이터의 크기를 포함하는 숫자입니다(예:b
,Mb
).<count-x>
샤드에 있는 문서 수를 보고하는 숫자입니다.<number of chunks-x>
샤드에 있는 청크의 수를 나타내는 숫자입니다.<size-x>/<number of chunks-x>
측정 단위를 포함하여 샤드에 대한 청크당 예상 데이터 크기를 반영하는 계산된 값입니다(예:b
,Mb
).<count-x>/<number of chunks-x>
샤드의 청크당 예상 문서 수를 반영하여 계산된 값입니다.<stats.size>
측정 단위를 포함하여 샤드 컬렉션에 있는 데이터의 전체 크기를 보고하는 값입니다.<stats.count>
샤드 컬렉션의 총 문서 수를 보고하는 값입니다.<calc total chunks>
모든 샤드의 청크 수를 보고하는 계산된 숫자입니다. 예를 들어 다음과 같습니다.<calc total chunks> = <number of chunks-a> + <number of chunks-b> <estDataPercent-x>
각 샤드에 대해 데이터 크기를 컬렉션의 전체 데이터 크기에 대한 백분율로 반영하는 계산된 값입니다. 예를 들어 다음과 같습니다.<estDataPercent-x> = <size-x>/<stats.size> <estDocPercent-x>
각 샤드에 대한 문서 수를 컬렉션의 총 문서 수의 백분율로 반영하는 계산된 값입니다. 예를 들면 다음과 같습니다.<estDocPercent-x> = <count-x>/<stats.count> stats.shards[ <shard-x> ].avgObjSize
측정 단위를 포함한 샤드의 평균 객체 크기를 반영하는 숫자입니다.
행동
Wired Tiger 스토리지 엔진 을 사용하여 mongod
를 비정상적으로 종료한 후 에서 보고한 개수 및 크기 통계가 db.collection.getShardDistribution()
부정확할 수 있습니다.
편차의 정도는 마지막 체크포인트와 비정상 종료 사이에 수행된 삽입, 업데이트 또는 삭제 작업의 수에 따라 달라집니다. 체크포인트는 보통 60초마다 발생합니다. 그러나mongod
기본값이 아닌 --syncdelay
설정으로 실행되는 인스턴스는 체크포인트가 다소 빈번하게 발생할 수 있습니다.
mongod
의 각 컬렉션에서 validate
를 실행하여 비정상 종료 후 통계를 복원합니다.
비정상 종료 후