X

Phantom Read

I. RDBMS의 트랜잭션 데이터 공유 문제

트랜잭션 발생 문제 동시 접근
A B
Read Read 읽기만 수행 시 발생 문제 없음 허용
Read Write Dirty, Non-Repeatable, Phantom Read 허용/불가
Write Write Lost Update 불가
  • Read와 Write 트랜잭션이 하나의 data에 동시에 접근 시 일관성을 훼손하는 Dirty Read, Phantom Read 등 문제 발생 가능

II. 없던 레코드 발생 현상, Phantom Read

가. Phantom Read 상태절차도

개념 – 한 트랙잭션 내 같은 쿼리를 두 번 수행 시, 없었던 레코드가 두 번째 쿼리에서 발생하는 현상
절차

나. Phantom Read 절차 설명

절차 트랜잭션 Data 설명
① Read B 1, Alex – Read 트랜잭션은 총 N개의 레코드를Read
② Write
(Insert)
A 1, Alex
2, Bob
– Write 트랜잭션에 의해 신규 Insert 수행하여 레코드 카운트 N+1로 증가
③ Read B 1, Alex
2, Bob
– Read 트랜잭션은 동일 Data에 대해 재수행 하였으나, 처음보다 N+1로 증가
  • 이 외 Read 트랜잭션 작업 중간 Write 트랜잭션이 업데이트/커밋함으로 인해 초기 읽은 data를 다시 읽을 수 없는 Non-repeatable Read가 존재
  • Dirty Read, Non-Repeatable Read, Phantom Read 문제 해결 위해 데이터베이스는 트랜잭션 수준 읽기 일관성 제공

 

Categories: 데이터베이스
도리: