문제
데이터베이스 트랜잭션의 ACID 특성 중 **격리성(Isolation)**을 위반하는 3가지 이상 현상(더티 리드, 비반복 읽기, 팬텀 리드)을 각각 설명하고, **다중 버전 동시성 제어(MVCC)**에서 읽기 타임스탬프와 쓰기 타임스탬프를 이용한 충돌 처리 방식을 서술하시오.
정답
더티 리드는 커밋되지 않은 데이터를 읽는 현상, 비반복 읽기는 같은 트랜잭션에서 동일한 데이터를 다시 읽을 때 다른 값이 나타나는 현상, 팬텀 리드는 같은 조건으로 검색할 때 없던 튜플이 나타나는 현상이다. MVCC에서는 각 데이터 아이템에 읽기/쓰기 타임스탬프를 부여하여, 트랜잭션이 데이터에 접근할 때 타임스탬프를 비교하여 읽기는 가장 최근 버전을, 쓰기는 타임스탬프 순서를 위반하지 않는 경우에만 허용하여 직렬 가능성을 보장한다.
더티 리드비반복 읽기팬텀 리드Dirty ReadNon-repeatable ReadPhantom Read읽기 타임스탬프쓰기 타임스탬프다중 버전MVCC직렬 가능성충돌 처리
해설
격리성 위반 현상은 동시 실행되는 트랜잭션들이 서로 영향을 미쳐 발생한다. 더티 리드는 아직 커밋되지 않은 변경사항을 읽는 것이고, 비반복 읽기는 다른 트랜잭션의 UPDATE로 인해 같은 데이터를 다시 읽을 때 다른 값이 나오는 것이며, 팬텀 리드는 다른 트랜잭션의 INSERT/DELETE로 인해 검색 결과에 새로운 튜플이 나타나는 현상이다. MVCC는 각 데이터에 타임스탬프를 부여하여 버전을 관리하며, 트랜잭션은 자신의 타임스탬프 이전 버전만 읽고, 쓰기 시에는 타임스탬프 순서를 검사하여 충돌을 처리한다.