문제
다음 트랜잭션 시나리오에서 발생할 수 있는 문제로 가장 적절한 것은?
트랜잭션 T1: UPDATE 계좌 SET 잔액 = 잔액 - 100000 WHERE 계좌번호 = 'A001'; 트랜잭션 T2: SELECT 잔액 FROM 계좌 WHERE 계좌번호 = 'A001'; (T1이 커밋되기 전에 T2가 실행됨)
① Dirty Read - T2가 T1의 미확정 변경사항을 읽을 수 있다 ② Non-repeatable Read - T2가 같은 데이터를 다시 읽으면 다른 값이 나온다 ③ Phantom Read - T2가 존재하지 않는 새로운 행을 읽는다 ④ Lost Update - T1의 변경사항이 손실된다
정답
1번
해설
①번이 정답이다. T1이 커밋되기 전에 T2가 T1의 변경사항을 읽는 것은 Dirty Read 현상이다. T2는 T1이 롤백될 수도 있는 불확실한 데이터를 읽게 된다. ②번은 같은 트랜잭션 내에서 반복 읽기 시 다른 값이 나오는 경우, ③번은 새로운 행이 나타나는 경우, ④번은 동시 업데이트로 인한 변경사항 손실이다.