트랜잭션 격리 수준 (Isolation Level)
READ UNCOMMITTED
COMMIT되지 않은 데이터를 읽을 수 있다.
snapshot 으로 작업중인 데이터라도..
보통 이 level에서는 MVCC가 적용되지 않는다.
(DIRTY READ)
READ COMMITTED
read 시점을 기준으로 최근에 COMMIT 된 데이터만 읽는다.
(NON_REPEATABLE READ)
REPEATABLE READ
특정 시점 (DB마다 다름)을 기준으로 최근에 COMMIT 된 데이터만 읽는다.
e.g. tx시작시, 최초 read시..
(PHANTOM READ) -> MVCC 사용하는 rdb에서는 스냅샷을 생성하여 사용하기 때문에 발생하지 않는다.
SERIALIZABLE
가장 엄격한 격리수준
부정합 문제
- DIRTY READ
다른 트랜잭션에서 작업이 commit되지 않았음에도 이를 읽게 되는 현상
- NON-REPEATABLE READ
하나의 트랜잭션 내에서 동일한 read를 했음에도 다른 결과를 얻는 현상
- PHANTOM READ
하나의 트랜잭션 내에서 동일한 쿼리문이 실행되었음에도 다른 결과를 얻는 현상
e.g. 없던 데이터..