1. 시작모두가 믿는 확정 상태
2. T1 수정아직 커밋되지 않음
3. T2 읽음잠정값을 그대로 참조
4. T1 롤백잠정값이 사라짐
T1
변경 전
아직 쓰기 작업 없음
공유 데이터는 안정된 상태입니다.
미커밋
UPDATE balance = 200
값을 바꿨지만 아직 COMMIT 하지 않았습니다.
대기 중
수정은 보이지만 확정 전
이 상태의 값은 언제든 취소될 수 있습니다.
취소
ROLLBACK
T1의 변경은 없던 일이 됩니다.
공유 잔고
잠정값
200만원
보일 수는 있지만 아직 사실로 확정되지 않았습니다.
더러운 데이터
200만원
T2가 읽은 순간, 문제의 기준값이 됩니다.
실제 확정값
100만원
데이터베이스에 남는 값은 처음 상태뿐입니다.
T2
읽기 전
아직 판단 기준 없음
문제도 아직 시작되지 않았습니다.
대기
읽지 않았다면 안전
확정 전 값에 의존하지 않습니다.
문제 발생
SELECT balance -> 200
T2는 200만원을 실제 잔고라고 믿고 계산을 시작합니다.
후속 처리
이미 200만원 기준으로 계산 완료
근거가 사라졌는데도 계산 결과는 남아 버립니다.