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