문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

setIndexCommitQuorum

이 페이지의 내용

  • 호환성
  • 구문
  • 명령 필드
  • 행동
  • 예제
setIndexCommitQuorum

setIndexCommitQuorum 명령은 프라이머리 노드가 인덱스를 커밋하기 전에 로컬 인덱스 빌드를 커밋할 준비가 되어야 하는 데이터 보유 멤버의 최소 수를 설정합니다.

이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

참고

이 명령은 모든 MongoDB Atlas 클러스터에서 지원됩니다. 모든 명령에 대한 자세한 내용은 지원되지 않는 명령을 참조하세요.

명령은 다음과 같은 구문을 가집니다:

db.runCommand(
{
setIndexCommitQuorum: <string>,
indexNames: [ <document> ],
commitQuorum: <int> | <string>,
comment: <any>
}
)

이 명령은 다음 필드를 사용합니다.

필드
유형
설명
setIndexCommitQuorum
string

인덱스가 빌드되는 컬렉션의 이름입니다.

array

수정할 진행 중인 인덱스 빌드의 배열입니다. 배열의 각 요소는 인덱스의 이름 이어야 합니다.

indexNames 에 지정된 인덱스는 해당 인덱스 빌더와 연결된 진행 중인 빌드의 전체 세트, 즉 단일 createIndexes 또는 db.collection.createIndexes() 작업으로 구축된 인덱스여야 합니다.

int 또는 string

프라이머리가 indexes 를 준비됨으로 표시하기 전에 성공적인 인덱스 빌드 를 보고해야 하는 프라이머리를 포함한 데이터 보유 복제본 세트 멤버(즉, 커밋 쿼럼)의 최소 수입니다.

MongoDB v5 부터 시작됩니다.0, 쿼럼 커밋이 "votingMembers" 로 설정되면 중단된 일부 인덱스 빌드 를 재개할 수 있습니다.

commitQuorum을 업데이트하려면 노드 복제본 세트 노드에 members[n].buildIndexestrue 로 설정되어 있어야 합니다. 투표 노드에 members[n].buildIndexes false 로 설정된 경우 기본 "votingMembers" 쿼럼 커밋을 사용할 수 없습니다. 모든 노드를 members[n].buildIndexes true 로 구성하거나 다른 쿼럼 커밋을 선택합니다.

는 다음과 같은 값을 지원합니다.

  • "votingMembers" - 모든 데이터를 보유하는 투표 복제본 세트 멤버(기본값)입니다. "투표" 멤버는 members[n].votes0보다 큰 모든 복제본 세트 노드를 말합니다.

  • "majority" - 데이터 보유 복제본 세트 멤버의 단순 과반수입니다.

  • <int> - 특정 수의 데이터를 보유하는 복제본 세트 멤버입니다. 0 보다 큰 정수를 지정합니다.

  • 복제본 세트 태그 이름.

comment
어떤

선택 사항. 이 명령에 첨부할 사용자 제공 코멘트입니다. 설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.

댓글은 유효한 모든 BSON types (문자열, 정수, 객체, 배열 등)이 될 수 있습니다.

참고

featureCompatibilityVersion 4.4 이상이 필요합니다.

복제본 mongod 세트 또는 샤딩된 클러스터의 각 4.4 에는 복제본 세트 멤버 간에 인덱스 빌드를 동시에 시작할 수 있도록 featureCompatibilityVersion 이 이상으로 설정되어 있어야 합니다 .

인덱스 생성은 여러 단계의 프로세스 로 이루어집니다. 인덱스 생성 프로세스는 commit quorum 를 사용하여 세컨더리 노드의 복제 지연을 최소화합니다.

세컨더리 노드가 commitIndexBuild oplog 항목을 수신하면 노드는 로컬 인덱스 빌드를 커밋할 수 있을 때까지 추가 oplog 애플리케이션을 중지합니다. 인덱스 빌드는 순간에서 며칠까지 걸릴 수 있으므로 세컨더리 노드가 프라이머리 노드보다 빌드 속도가 느리면 복제 지연이 상당할 수 있습니다.

복제 지연을 관리하기 위해 쿼럼 커밋은 최소 수의 보조 노드도 인덱스 빌드를 커밋할 준비가 될 때까지 프라이머리 노드에서 인덱스 빌드 커밋을 지연합니다.

쿼럼 커밋은 명령이 완료될 때 세컨더리 인덱스의 사용할 준비가 되었다고 보장하지 않습니다. 특정 수의 세컨더리를 사용할 준비가 되었는지 확인하려면 적절한 쓰기 고려를 설정합니다.

쿼럼 커밋에 포함되지 않은 세컨더리 노드가 commitIndexBuild oplog 항목을 수신하는 경우, 노드는 인덱스 빌드가 완료될 때까지 복제를 차단할 수 있습니다.

setIndexCommitQuorum 를 발행해도 0commitQuorum 으로 시작된 인덱스 빌드에는 영향을 주지 않습니다.

중요

buildIndexesfalse 로 설정된 복제본 세트 노드는 쿼럼 커밋에 포함될 수 없습니다.

쿼럼 커밋쓰기 고려 간에는 중요한 차이점이 있습니다.

  • 인덱스 빌드는 쿼럼 커밋 사용합니다.

  • 쓰기 작업은 쓰기 고려 사용합니다.

클러스터 내의 각 데이터 보유 노드는 투표권을 가진 노드입니다.

'쿼럼 커밋'동시 인덱스 빌드를 커밋하기 위해 준비해야 하는 데이터 보유 투표 멤버의 수 또는 프라이머리를 포함한 특정 투표 멤버를 지정하며, 이는 프라이머리가 커밋을 실행하기 전에 수행됩니다.

쓰기 고려는 쓰기 작업이 지정된 수의 인스턴스로 전파되었다는 확인 수준입니다.

커밋 쿼럼 프라이머리는 프라이머리가 인덱스 빌드를 커밋하기 전에 인덱스 빌드를 완료할 준비가 되어 있어야 하는 노드 수를 지정합니다. 반대로 프라이머리에서 인덱스 빌드를 커밋한 경우 쓰기 고려가 명령이 반환되기 전에 인덱스 빌드를 완료해야 하는 노드 수를 지정합니다.

인덱스는 데이터를 보유한 모든 replica set 멤버에서 동시에 replica set 또는 cluster 빌드를 기반으로 합니다. cluster의 경우 인덱스 빌드는 인덱싱되는 collection에 대한 데이터가 포함된 샤드에서만 발생합니다. 프라이머리에는 인덱스를 사용할 준비가 된 것으로 표시하기 전에 빌드를 완료해야 하는 자신을 포함한 최소한의 데이터 보유 voting 멤버(즉, commit quorum)가 필요합니다. 자세한 내용 은 복제된 환경에서의 인덱스 빌드를 참조하세요.

다음 작업은 두 인덱스의 인덱스 빌드를 시작합니다.

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는 인덱싱된 필드의 이름과 정렬 순서를 연결하여 인덱스 이름을 생성했습니다.

← 설정 기능 호환성 버전