티스토리 뷰

데이터베이스 읽기 이상 현상 (Read Phenomena)

Dirty Read: 아직 commit되지 않은 트랜잭션의 변경사항을 다른 트랜잭션이 조회하는 경우

Non-repeatable Read: 같은 쿼리를 두 번 실행하는 트랜잭션에서 그 사이 다른 트랜잭션이 변경하여 다른 결과값이 나오는 경우

Phantom Read: 같은 쿼리를 두 번 실행하는 트랜잭션에서 그 사이 없던 데이터가 추가되는 경우

 

 

트랜잭션 고립 수준 (Isolation Level)

레벨이 오를수록 격리 수준/데이터 정합성 증가, 성능 감소

 

Level 0 - Read Uncommited

트랜잭션 수행중이거나 아직 commit되지 않은 데이터를 다른 트랜잭션에서 read 허용

Dirty Read, Non-repeatable Read, Phantom Read 발생 가능

 

Level 1 - Read Commited

트랜잭션 수행이 완료되어 commit된 데이터만 다른 트랜잭션에서 read 허용

Non-repeatable Read, Phantom Read 발생 가능

일반적으로 DBMS에서 디폴트로 설정하는 레벨

 

Level 2 - Repeatable Read

트랜잭션 진행 중 외부에서 갱신(Update), 삭제(Delete) 불가능

삽입(Insert) 가능

Phantom Read 발생 가능

 

Level 3 - Serializable

트랜잭션 진행중 외부에서 삽입, 삭제, 갱신 모두 불가능

모든 이상 현상 방지 가능

하지만 그만큼 동시성이 떨어져서 성능이 하락함

 

 

댓글