반응형
I. Phantom Read
정의 |
한 트랜잭션 내에서 같은 쿼리를 두 번 수행 시, 첫 번째 쿼리에서 없던 레코드(유령, Phantom)가 두 번째 쿼리에서 발생하는 현상 |
||
절차 |
![]() |
||
절차 |
트랜잭션 |
데이터 예제 |
설명 |
① Read |
Transaction B |
|
Read Transaction 은 총 N 개의 Record 를 Read |
② Write (Insert) |
Transaction A |
|
Write Transaction 에 의해 기존 Record 에신규로 Insert 를 수행하여 Record Count 가 N+1 로 증가 |
③ Read |
Transaction B |
|
Read Transaction 은 동일 Data 에 대해서 Read 를 재 수행 하였으나, 처음 읽었을 때보다 N+1 로 Record Count 증가 |
- 이 외에 Read Transaction 작업 중간, Write Transaction 이 Update/Commit 함으로 인해 초기 읽은 data를 다시 읽을 수 없는 Non-repeatable Read 가 존재 - Dirty Read, Non-Repeatable Read, Phantom Read 문제를 해결하기 위해 Database 는 트랜잭션 수준 읽기 일관성 (Transaction-Level Read Consistency)을 제공 |
반응형
'IT기술노트 > 데이터베이스' 카테고리의 다른 글
Locking (0) | 2021.03.07 |
---|---|
동시성제어의 문제점 (0) | 2021.03.07 |
동시성제어(Concurrency Control) (0) | 2021.03.07 |
Isolation Level (0) | 2021.03.07 |
Dirty Read (0) | 2021.03.07 |
정적, 동적 인덱싱 (0) | 2021.03.07 |
Dense, Sparse, Multilevel Index (0) | 2021.03.07 |
DB Index (0) | 2021.03.07 |
댓글