Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ /

readConcern "majority"

이 페이지의 내용

  • 성능
  • 가용성
  • 예시
  • 스토리지 엔진 지원
  • 읽기 고려 "majority" 및 트랜잭션
  • 읽기 고려 "majority" 및 집계
  • 자체 쓰기 읽기
  • 기본-보조-아비터 복제본 세트
"majority"

다중 문서 트랜잭션과 관련이 없는 읽기 작업의 경우, 읽기 고려 "majority"는 읽은 데이터를 복제본 세트 멤버의 과반수가 승인했음을 보장합니다(. 읽은 문서는 내구성이 뛰어나고 롤백되지 않음이 보장됩니다.

다중 문서 트랜잭션에서 실행되는 작업의 경우, 읽기 고려 "majority"는 트랜잭션이 쓰기 고려 'majority'와 함께 커밋되는 경우에만 보증을 제공합니다. 그렇지 않으면 "majority" 읽기 고려가 트랜잭션에서 읽은 데이터에 대한 보장을 제공하지 않습니다.

읽기 고려 수준에 관계없이 노드의 최신 데이터는 시스템에 있는 데이터의 최신 버전을 반영하지 않을 수 있습니다.

프라이머리에 장애가 발생하는 경우 어떻게 되는지 자세히 알아보려면 자동 페일오버를 참조하세요.

각 복제본 세트 멤버는 과반수 커밋 포인트의 데이터 뷰를 메모리에 유지하며, 과반수 커밋 포인트는 프라이머리에서 계산합니다. 읽기 고려 "majority"를 해결하기 위해 노드는 이 뷰에서 데이터를 반환하며 성능 측면에서 다른 읽기 고려와 비슷합니다.

읽기 고려 "majority"는 인과적으로 일관된 세션 및 트랜잭션 유무에 관계없이 사용할 수 있습니다.

경고

프라이머리-세컨더리-중재자(PSA) 아키텍처를 사용 중이라면 다음을 고려하세요.

  • 쓰기 고려 "majority"는 세컨더리를 사용할 수 없거나 지연되었을 때 성능 문제를 일으킬 수 있습니다. 이러한 문제를 완화하는 방법에 대한 조언은 자체 관리 PSA 복제본 세트를 통한 성능 문제 완화를참조하세요.

  • 글로벌 기본값 "majority"를 사용하고 있고 쓰기 고려가 과반수 크기보다 작으면, 쿼리가 오래된 (완전히 복제되지 않은) 부실 데이터를 반환할 수 있습니다.

세 멤버로 구성된 복제본 세트에 0을 쓰는 쓰기 작업의 다음 타임라인을 고려해 보십시오.

참고

단순화를 위해 이 예시에서는 다음과 같은 상황을 가정합니다.

  • 쓰기 0 이전의 모든 쓰기가 모든 구성원에 성공적으로 복제되었습니다.

  • 쓰기 이전은 쓰기 0 이전의 이전 쓰기입니다.

  • Write 0 이후에는 다른 쓰기가 발생하지 않았습니다.

3 노드 복제본 세트에 대한 쓰기 작업의 타임라인
시간
이벤트
가장 최근 글
가장 최근 w: "대다수" 쓰기

t 0

기본 적용 쓰기 0

Primary: Write 0
Secondary 1: Write prev
Secondary 2: Write prev
Primary: Write prev
Secondary 1: Write prev
Secondary 2: Write prev

t 1

보조 1은 쓰기 0을적용합니다.

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write prev
Primary: Write prev
Secondary 1: Write prev
Secondary 2: Write prev

2

보조 2 는 쓰기 0을 적용합니다.

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0
Primary: Write prev
Secondary 1: Write prev
Secondary 2: Write prev

t 3

프라이머리는 세컨더리 1에 성공적으로 복제되었음을 알리고 클라이언트에 확인 메시지를 보냅니다.

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0
Primary: Write 0
Secondary 1: Write prev
Secondary 2: Write prev

t 4

주 서버가 보조 서버 2로복제가 성공했음을 인식합니다.

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0
Primary: Write 0
Secondary 1: Write prev
Secondary 2: Write prev

t 5

보조 1은 (정기적인 복제 메커니즘을 통해) 가장 최근의 w에 대한 스냅샷을 업데이트하라는 알림을 받습니다. "majority" 쓰기

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0
Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write prev

t 6

보조 2는 (정기적인 복제 메커니즘을 통해) 가장 최근의 w에 대한 스냅샷을 업데이트하라는 알림을 받습니다. "majority" 쓰기

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0
Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0

그런 뒤, 다음 표에는 "majority" 읽기 우려를 가진 읽기 작업이 T 시점에 볼 수 있는 데이터 상태가 요약되어 있습니다.

세 멤버 복제본 세트에 대한 쓰기 작업의 타임라인입니다.
대상 읽기
시간 T
데이터 상태

기본

t 이전 3

데이터는 이전쓰기를 반영합니다.

기본

t 이후 3

데이터는 쓰기 0을반영합니다.

중고등 교육 1

t 이전 5

데이터는 이전쓰기를 반영합니다.

중고등 교육 1

t 이후 5

데이터는 쓰기 0을반영합니다.

중고등 교육 2

t 이전 또는 t 6

데이터는 이전쓰기를 반영합니다.

중고등 교육 2

t 이후 6

데이터는 쓰기 0을반영합니다.

읽기 고려 "majority"는 WiredTiger 스토리지 엔진에서 사용할 수 있습니다.

serverStatus 명령은 스토리지 엔진이 "majority" 읽기 고려를 지원하는지 여부를 나타내는 storageEngine.supportsCommittedReads 필드를 반환합니다.

참고

개별 작업 수준이 아닌 트랜잭션 수준에서 읽기 문제를 설정합니다. 트랜잭션에 대한 읽기 문제를 설정하려면 트랜잭션 및 읽기 문제를 참조하십시오.

다중 문서 트랜잭션에서 실행되는 작업의 경우, 읽기 고려 "majority"는 트랜잭션이 쓰기 고려 'majority'와 함께 커밋되는 경우에만 보증을 제공합니다. 그렇지 않으면 "majority" 읽기 고려가 트랜잭션에서 읽은 데이터에 대한 보장을 제공하지 않습니다.

$out단계를 포함하는 집계에 대해 읽기 고려(read concern) 수준을 "majority" 지정할 수 있습니다.

쓰기에서 승인을 요청하는 경우 인과적으로 일관된 세션을 사용하여 자신의 쓰기를 읽을 수 있습니다.

MongoDB 5.0부터는 스토리지 엔진 개선으로 인해 enableMajorityReadConcern--enableMajorityReadConcern 변경할 수 없으며 항상 true으로 설정됩니다.

이전 버전의 MongoDB에서는 enableMajorityReadConcern--enableMajorityReadConcern 구성할 수 있으며 false으로 설정하여 스토리지 캐시 압력으로 인해 3멤버 PSA(Primary-Secondary-Arbiter) 아키텍처를 사용하는 배포가 고정되지 않도록 방지할 수 있습니다.

프라이머리-세컨더리-중재자(PSA) 아키텍처를 사용 중이라면 다음을 고려하세요.

  • 쓰기 고려 "majority"는 세컨더리를 사용할 수 없거나 지연되었을 때 성능 문제를 일으킬 수 있습니다. 이러한 문제를 완화하는 방법에 대한 조언은 자체 관리 PSA 복제본 세트를 통한 성능 문제 완화를참조하세요.

  • 글로벌 기본값 "majority"를 사용하고 있고 쓰기 고려가 과반수 크기보다 작으면, 쿼리가 오래된 (완전히 복제되지 않은) 부실 데이터를 반환할 수 있습니다.

돌아가기

"available"