토픽 48 / 201·무결성 및 트랜잭션
Snapshot Isolation (스냅샷 격리)
Snapshot Isolation (스냅샷 격리)
트랜잭션이 시작 시점의 데이터 스냅샷을 기반으로 읽기를 수행하고, 커밋 시 쓰기 충돌을 검사하는 격리 수준
동작원리
- •트랜잭션 시작 시 일관된 스냅샷 생성 (시작 시점 기준)
- •읽기: 스냅샷에서 읽음 → 다른 트랜잭션의 변경 미반영 (일관된 읽기)
- •쓰기: First-Committer-Wins 규칙 — 동일 데이터를 다른 트랜잭션이 먼저 커밋하면 충돌 감지 후 롤백
Write Skew 문제
- •두 트랜잭션이 서로 다른 행을 읽고 각각 다른 행을 수정 → 개별적으로 제약 만족하지만 전체적으로 제약 위반
- •예: 의사 당직 최소 1명 제약 — 두 의사가 동시에 자신의 당직 해제 → 당직 0명
- •해결: SSI(Serializable Snapshot Isolation), 명시적 잠금(SELECT FOR UPDATE)
비교표
적용사례: PostgreSQL(기본 Repeatable Read = SI), Oracle(기본 Read Committed + SI), SQL Server(RCSI)
연관: MVCC, 격리 수준, Write Skew, SSI