트랜잭션 고립화 수준과 수준에 따른 특징

데이터 베이스의 실행 단위인 트랜잭션은 동시성 제어를 해주지 않으면 데이터 무결성이 보장받지 못하게 된다. 이를 위해 Locking 기법으로 동시성 제어를 해주게 되는데 Locking 기법에서도 고립화 단계에 따라 나뉘게 된다. 고립화 단계는 4단계로 존재한다.


Read Uncommitted (Level 0)

고립화 단계중 가장 낮은 단계로, Shared Lock이 전혀 걸리지 않은 단계이다.

이름 그대로 다른 트랜잭션이 데이터를 조작하는 동안 commit 되기 전에도 Select 조회가 가능하다.

즉, 트랜잭션이 끝나지 않은 상황에서 다른 트랜잭션이 접근 가능하기 때문에 데이터베이스의 일관성이 보장되지 않는다.

Read Committed (Level 1)

트랜잭션이 커밋되어 확정된 데이터만 다른 트랜잭션이 조회가 가능한 단계이다.

이름 그대로 다른 트랜잭션이 데이터를 조작하고 commit 이 끝나야만 Select 조회가 가능하다.

Repeatable Read (Level 2)

트랜잭션이 데이터를 읽는 경우, 조회가 끝날때까지 다른 트랜잭션이 데이터 수정, 삭제가 불가능한 단계이다.

Serializable (Level 3)

트랜잭션이 데이터를 읽는 경우, 조회가 끝날때까지 다른 트랜잭션이 데이터 조작(수정, 삭제, 삽입)이 불가능한 단계이다.

완벽한 데이터 무결성을 보장하는 단계이지만 동시성 제어 능력은 위의 단계들보다 낮다.

고립화 단계별 동시성 제어 능력

기본적으로 고립화 단계가 높아질수록 데이터 접근을 제어하는 범위가 커지기 때문에 데이터의 일관성 수준은 높아지고 데이터의 동시성 제어 능력은 떨어지게 된다.

img