Learning
토픽 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