2015-01-15 10 views
2

하나의 팩소스 그룹에서 스패너의 읽기 전용 트랜잭션을 이해합니다.스패너의 읽기 전용 트랜잭션

그러나 하나 이상의 paxos 그룹에 대한 읽기 전용 트랜잭션은 어떻게 작동합니까? 이 신문은 타임 스탬프로 TT.now().latest을 사용하여 지정된 타임 스탬프로 스냅 샷을 읽는다고합니다. 그러나 이것이 왜 효과가 있습니까?

각 복제본에는 안전한 시간이 있습니다. 안전 시간은 복제본 내의 최종 쓰기 트랜잭션의 시간 소인입니다. asked timestamp <= safe time 인 경우 복제본이 최신입니다.

또한 타임 스탬프 (읽기 전용 트랜잭션의 두 번째 단계)로 읽은 스냅 샷은 복제본이 최신 상태가 될 때까지 기다려야 할 수도 있습니다. 읽기 트랜잭션 후에 쓰기 트랜잭션이 발생하지 않으면 어떻게됩니까? 그러면 안전한 시간이 업데이트되지 않고 읽기 트랜잭션이 영원히 차단됩니다.

답변

1

AFAICT, 요점은, 프로세스가 TT.now(). latest를 확인하면 다른 모든 프로세스는 절대로 해당 타임 스탬프를 얻지 않으므로 향후 쓰기 트랜잭션에는 커밋 시간 (안전 시간)이 . 따라서 스냅 샷 읽기를 수행하는 프로세스는 해당 타임 스탬프가 경과 할 때까지 대기해야합니다.

1

이제 Google Cloud Platform에서 Spanner를 사용할 수 있습니다. 트랜잭션이 하나의 논리적 포인트에서 읽어 세트를 실행 읽기 전용

https://cloud.google.com/spanner/docs/transactions#read-only_transactions

==

구름 스패너 : 여기

는 읽기 전용 트랜잭션이 작동하는 방법에 대한 문서입니다 읽기 전용 트랜잭션의 관점과 다른 독자 및 작성자의 관점에서 볼 때 Cloud Spanner 데이터베이스에 대한 정보를 제공합니다. 즉, 읽기 전용 트랜잭션은 항상 트랜잭션 히스토리의 선택된 지점에서 데이터베이스의 일관된 상태를 관찰합니다.

==