티스토리 뷰
데이터베이스 읽기 이상 현상 (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
트랜잭션 진행중 외부에서 삽입, 삭제, 갱신 모두 불가능
모든 이상 현상 방지 가능
하지만 그만큼 동시성이 떨어져서 성능이 하락함
'Computer Science > Database' 카테고리의 다른 글
[Database] 인덱스 (Index) (0) | 2022.09.04 |
---|---|
[Database] 병행 제어 (Concurrency Control) / 로킹 (Locking) (0) | 2022.09.03 |
[Database] 트랜잭션 회복 기법 (Recovery) (0) | 2022.09.03 |
[Database] 트랜잭션(Transaction) / ACID (0) | 2022.08.31 |
[Database] 뷰(View) 개념 및 장단점 (0) | 2022.08.30 |
댓글