Phantom Read

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

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

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

가. Phantom Read 상태절차도

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

나. Phantom Read 절차 설명

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

 

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^