이 페이지에서는 Spanner에서 반복 가능한 읽기 격리를 사용하는 방법을 설명합니다.
반복 가능한 읽기는 트랜잭션 내 모든 읽기 작업에서 트랜잭션 시작 시에 존재했던 데이터베이스의 일관된 스냅샷을 볼 수 있게 하는 격리 수준입니다. Spanner에서 이 격리 수준은 스냅샷 격리라고도 하는 기법을 통해 구현됩니다. 이 방식은 다른 트랜잭션에서 수정할 수 있는 데이터를 수많은 트랜잭션이 읽는 높은 읽기-쓰기 동시 실행 시나리오에서 유용합니다. 고정 스냅샷을 사용하면 반복 가능한 읽기가 더 엄격한 직렬화 가능 격리 수준의 성능 영향을 방지합니다. 읽기는 잠금을 획득하지 않고 동시 쓰기를 차단하지 않고 실행될 수 있으므로 직렬화 충돌로 인해 다시 시도해야 할 수 있는 트랜잭션이 취소되는 경우가 줄어들 수 있습니다. 자세한 내용은 격리 수준 개요를 참조하세요.
격리 수준 설정
다음 방법을 사용하여 트랜잭션 수준에서 읽기-쓰기 트랜잭션의 격리 수준을 설정할 수 있습니다.
클라이언트 라이브러리
Go
자바
Node.js
Python
REST
TransactionOptions.isolation_level REST API를 사용하여 트랜잭션 수준에서 읽기-쓰기 트랜잭션의 격리 수준을 설정할 수 있습니다. 유효한 옵션은 TransactionOptions.SERIALIZABLE 및 TransactionOptions.REPEATABLE_READ입니다. 기본적으로 Spanner는 격리 수준을 직렬화 가능한 격리로 설정합니다.
RPC
지원되지 않는 사용 사례
- 읽기-쓰기 트랜잭션에서만 반복 가능한 읽기 격리를 사용할 수 있습니다. 읽기 전용 트랜잭션에 이 격리 수준을 설정하면 Spanner에서 오류를 반환합니다. 모든 읽기 전용 트랜잭션은 고정된 스냅샷에서 작동하며 잠금이 필요하지 않습니다.
- 반복 가능한 읽기 격리를 사용하여 열에 전체 텍스트 검색 색인이 정의된 테이블을 수정할 수는 없습니다.
다음 단계
격리 수준 자세히 알아보기
반복 가능한 읽기 격리에서 SELECT FOR UPDATE를 사용하는 방법 알아보기
TrueTime 및 외적 일관성에서 Spanner 직렬 가능성 및 외적 일관성 자세히 알아보기