문서 메뉴

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

readConcern "snapshot"

이 페이지의 내용

  • 운영
  • 읽기 고려 및 트랜잭션
  • 읽기 고려 및 atClusterTime
  • 고정 사이즈 컬렉션의 읽기 고려

버전 4.0에 추가.

버전 5.0에서 변경됨

읽기 고려 "snapshot"가 설정된 쿼리는 최근에 있었던 특정 단일 시점에 샤드 전체에 표시된 과반수 이상이 커밋한 데이터를 반환합니다. 읽기 고려 "snapshot"는 트랜잭션이 쓰기 고려 "majority"로 커밋되는 경우에만 보장을 제공합니다.

읽기 고려 "snapshot"다중 문서 트랜잭션에 사용할 수 있으며, MongoDB 5.0부터는 다중 문서 트랜잭션 외부의 특정 읽기 작업에 사용할 수 있습니다.

  • 트랜잭션이 인과적으로 일관적인 세션의 일부가 아닌 경우, 쓰기 고려 "majority"로 트랜잭션을 커밋하면 트랜잭션 작업은 과반수 이상이 커밋한 데이터의 스냅샷에서 읽기를 보장합니다.

  • 트랜잭션이 인과적으로 일관적인 세션의 일부인 경우, 쓰기 고려 "majority"로 트랜잭션을 커밋하면 트랜잭션 작업은 트랜잭션 시작 직전의 작업에 인과적 일관성을 제공하는 과반수 이상이 커밋한 데이터의 스냅샷에서 읽기를 보장합니다.

다중 문서 트랜잭션 외에는 다음과 같은 읽기 작업에 대해 프라이머리 및 세컨더리에서 읽기 고려 "snapshot" 를 사용할 수 있습니다.

다른 모든 읽기 명령은 "snapshot" 금지합니다.

읽기 고려를 허용하는 모든 작업의 목록은 읽기 고려를 지원하는 작업을 참조하세요.

다중 문서 트랜잭션은 읽기 고려 "snapshot""local""majority" 를 지원합니다.

참고

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

버전 5.0에 추가.

다중 문서 트랜잭션 외부에서 읽기 고려 "snapshot" 가 있는 읽기는 선택적 매개변수 atClusterTime 를 지원합니다. 매개변수 atClusterTime 를 사용하면 읽기에 대한 타임스탬프를 지정할 수 있습니다. T의 지정된 atClusterTime 을(를) 사용하여 읽기 요청을 충족하기 위해 mongod 은(는) 시간 T에서 사용 가능한 데이터를 기반으로 요청을 수행합니다.

db.runCommand()의 응답 또는 Session() 객체에서 연산의 operationTime 또는 clusterTime을 얻을 수 있습니다.

다음 명령은 읽기 고려 "snapshot" 를 사용하여 찾기 작업을 수행하고 클러스터 시간 Timestamp(1613577600, 1) 에 스냅샷에서 데이터를 읽도록 지정합니다.

db.runCommand( {
find: "restaurants",
filter: { _id: 5 },
readConcern: {
level: "snapshot",
atClusterTime: Timestamp(1613577600, 1)
},
} )

매개변수 atClusterTime을 제공하지 않으면 mongos 또는 단일 멤버 복제본에서 mongod를 설정하고, 가장 최근에 커밋된 스냅샷의 타임스탬프를 atClusterTime으로 선택한 후 클라이언트에 반환합니다.

트랜잭션 외부에서는 "snapshot" 읽기가 과반수 커밋된 데이터에서 읽도록 보장됩니다.

버전 부터 5 시작됩니다. ,0 고정 사이즈 컬렉션에서 읽을 "snapshot" 때는 읽기 고려 를 사용할 수 없습니다.

← readConcern "linearizable"