setIndexCommitQuorum
setIndexCommitQuorum
setIndexCommitQuorum
명령은 프라이머리 노드가 인덱스를 커밋하기 전에 로컬 인덱스 빌드를 커밋할 준비가 되어야 하는 데이터 보유 멤버의 최소 수를 설정합니다.
호환성
이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
참고
이 명령은 모든 MongoDB Atlas 클러스터에서 지원됩니다. 모든 명령에 대한 Atlas 지원에 대한 자세한 내용은 지원되지 않는 명령을 참조하세요.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
명령은 다음과 같은 구문을 가집니다:
db.runCommand({ setIndexCommitQuorum: <string>, indexNames: [ <document> ], commitQuorum: <int> | <string>, comment: <any> })
명령 필드
이 명령은 다음 필드를 사용합니다.
필드 | 유형 | 설명 |
---|---|---|
string | 인덱스가 빌드되는 컬렉션의 이름입니다. | |
array | 수정할 진행 중인 인덱스 빌드의 배열입니다. 배열의 각 요소는 인덱스의 이름 이어야 합니다.
| |
int or string | 프라이머리 등 데이터를 보유하는 복제본 세트 멤버의 최소 수(즉, 쿼럼 커밋)이며, 이는 프라이머리가 MongoDB v5.0 부터 쿼럼 커밋 이 쿼럼 커밋의 복제본 세트 노드에서 는 다음과 같은 값을 지원합니다.
| |
comment | any | 선택 사항. 이 명령에 첨부할 사용자 제공 코멘트입니다. 설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.
댓글은 유효한 모든 BSON types (문자열, 정수, 객체, 배열 등)이 될 수 있습니다. |
행동
참고
featureCompatibilityVersion 4.4 이상이 필요합니다.
setIndexCommitQuorum
를 발행해도 0
의 commitQuorum 으로 시작된 인덱스 빌드에는 영향을 주지 않습니다.
중요
buildIndexes 가 false
로 설정된 복제본 세트 노드는 쿼럼 커밋에 포함될 수 없습니다.
예시
복제본 세트 또는 샤딩된 클러스터에서 인덱스 빌드가 데이터를 보유한 모든 복제본 세트 멤버에서 동시에 진행됩니다. 샤딩된 클러스터의 경우 인덱스 빌드는 인덱싱되는 컬렉션에 대한 데이터가 포함된 샤드에서만 발생합니다. 프라이머리에는 인덱스를 사용할 준비가 된 것으로 표시하기 전에 빌드를 완료해야 하는 자신을 포함한 최소한의 데이터 보유 voting
멤버(즉, 쿼럼 커밋)가 필요합니다. 자세한 내용은 복제된 환경에서의 인덱스 빌드를 참조하세요.
다음 작업은 두 인덱스의 인덱스 빌드를 시작합니다.
db.getSiblingDB("examples").invoices.createIndexes( [ { "invoices" : 1 }, { "fulfillmentStatus" : 1 } ] )
기본값 으로 인덱스 빌드는 "votingMembers"
쿼럼 커밋 또는 모든 데이터 보유 투표 복제본 세트 멤버를 사용합니다. 다음 작업은 인덱스 빌드 쿼럼 커밋 을 "majority"
또는 데이터 보유 투표 멤버의 단순 과반수로 수정합니다.
db.getSiblingDB("examples").runCommand( { "setIndexCommitQuorum" : "invoices", "indexNames" : ["invoices_1", "fullfillmentStatus_1"], "commitQuorum" : "majority" } )
indexNames
에 지정된 인덱스는 지정된 인덱스 빌더, 즉createIndexes()
작업과 연결된 진행 중인 빌드의 전체 세트여야 합니다.indexNames
필드 는 인덱스의 이름 을 지정합니다. 인덱스는 명시적인 이름 없이 생성 MongoDB 는 인덱싱된 필드의 이름과 정렬 순서를 연결하여 인덱스 이름을 생성했습니다.