트랜잭션 격리 수준은 동시에 실행되는 트랜잭션 사이에서 어떤 읽기와 결과를 허용할지 정하는 보장 수준이다.
원리
읽기 미커밋·읽기 커밋·반복 읽기·직렬화 가능 등이 대표적이다. 같은 이름이라도 데이터베이스 구현이 더 강한 보장을 제공할 수 있다.
데이터베이스 내부 |
|---|
WAL · 체크포인트 · MVCC · 트랜잭션 격리 수준 · 읽기 커밋 |
데이터베이스 교착 상태 · 비관적 잠금 · 파티셔닝 · 시점 복구 · 데이터베이스 백업 |
예시
PostgreSQL의 반복 읽기는 같은 트랜잭션의 스냅샷을 유지하고 팬텀 읽기도 방지하지만 모든 직렬화 이상을 막지는 않는다.
데이터베이스 | |
|---|---|
관계형 | MySQL · PostgreSQL · MariaDB · SQLite |
NoSQL | |
스토리지 엔진 | |
주의할 점
강한 격리는 대기나 실패 후 재시도 비용을 만들 수 있다. 이름만 선택하지 말고 실제로 지켜야 할 업무 불변식과 동시 실행 예시로 검증한다.