다음 문제를 풀어보세요.
트랜잭션 T1, T2가 수행되는 다음 그림에서 T1의 연산결과(x+100)가 T2의 연산결과(x*2)로 인해 바르게 저장되지 않는 현상이 발생할 수 있다. 이 같은 현상을 무엇이라고 하는가?
1. 갱신 손실(lost update)
2. 오손 읽기(dirty read)
3. 지연 갱신(deferred update)
4. 갱신 충돌(update conflict)
트랜잭션 격리성 수준 (Transaction Isolation Level)
Isolation Level |
Dirty Read |
Non Repeatable Read |
Phantom Read |
Read Uncommitted |
Permitted |
Permitted |
Permitted |
Read Committed |
--- |
Permitted |
Permitted |
Repeatable Read |
--- |
--- |
Permitted |
Serializable |
--- |
--- |
--- |
Level - 0 ( = Read Uncommitted)
① 커밋되지 않은 데이터를 다른 트랜잭션에서 읽는 것을 허용
② Dirty Read, Non-Repeatable Read, Phantom Read 현상 발생
Dirty Read
다른 트랜잭션에 의해 수정되었지만 아직 커밋되지 않은 데이터를 읽는것을 의미한다. 커밋되지 않은 값을 읽었는데, 그 트랜잭션이 롤백(Rollback) 된다면 그 값을 읽은 트랜잭션은 비일관된 상태에 놓이게 된다.
Phantom Read
한 트랜잭션 내에서 같은 쿼리를 두번 수행했는데, 첫번째 쿼리에는 없던 유령(Phantom) 레코드가 두번째 쿼리에서 나타나는 현상을 말한다.
Level - 1 ( = Read Committed)
① 트랜잭션이 커밋되어 확정된 데이터만 읽는 것을 허용함으로써 Dirty Read를 방지해줌
② Non-Repeatable Read, Phantom Read 현상 발생
Level - 2 ( = Repeatable Read)
① 트랜잭션 내에서 쿼리를 두번 이상 수행할 때, 첫번째 쿼리에 있던 레코드가 사라지거나 값이 바뀌는 현상을 방지해 줌.
② Phantom Read 현상은 발생
Level - 3 ( = Serializable Read)
① 트랜잭션 내에서 쿼리를 두번 이상 수행할 때, 첫번째 쿼리에 있던 레코드가 사라지거나 값이 바뀌지 않음은 물론 새로운 레코드가 나타나지도 않음.
② 완벽한 일관성 제공
'정보시시스템감리사 > 데이터베이스' 카테고리의 다른 글
조인 선택률(join selectivity) (0) | 2017.08.31 |
---|---|
데이터 마이닝 분석기법 종류 (0) | 2017.08.29 |
교착상태 (deadlock) (0) | 2017.08.29 |
클러스터 인덱스와 해시 인덱스 (0) | 2017.08.25 |
ANY, SOME 또는 ALL에 의해 수정된 비교 연산자 (0) | 2017.08.24 |