샤딩된 클러스터의 청크 분할
기본적으로 MongoDB는 청크에 속한 데이터를 마이그레이션할 때만 잠재적으로 청크를 분할합니다. 그러나 기존 데이터를 사용하여 클러스터를 배포한 후처럼 클러스터의 데이터 양이 많고 청크가 매우 적은 경우에는 청크를 수동으로 분할해야 할 수 있습니다.
청크를 수동으로 분할하려면 middle
또는
find
필드와 함께 split
명령을 사용합니다.
mongosh
는 sh.splitFind()
및 sh.splitAt()
도우미 메서드를 제공합니다.
splitFind()
는 이 쿼리와 일치하는 첫 번째 반환 문서가 포함된 청크를 동일한 크기의 청크 두 개로 분할합니다. 샤드 컬렉션의 전체 네임스페이스(예: '<database>.<collection>
')를 splitFind()
로 지정해야 합니다. splitFind()
의 쿼리는 샤드 키를 사용할 필요가 없지만, 대부분의 경우에 샤드 키를 사용하는 것이 합리적입니다.
예시
다음 명령은 records
데이터베이스의 people
컬렉션에 있는 zipcode
필드에 대한 63109
값을 포함하는 청크를 분할합니다.
sh.splitFind( "records.people", { "zipcode": "63109" } )
splitAt()
을 사용하여 청크를 둘로 분할하고, 쿼리된 문서를 새 청크의 하한으로 사용합니다:
예시
다음 명령은 records
데이터베이스의 people
컬렉션에 있는 zipcode
필드에 대한 63109
값이 포함된 청크를 분할합니다.
sh.splitAt( "records.people", { "zipcode": "63109" } )
참고
splitAt()
은(는) 반드시 청크를 크기가 같은 두 개의 청크로 분할하지 않습니다. 분할은 해당 문서가 청크의 어디에 있는지에 관계없이 쿼리와 일치하는 문서 위치에서 발생합니다.