Non-Repeatable Read

반복 불가능 읽기는 같은 행을 다시 읽었는데 값이 달라지는 현상이다

두 번째 값은 커밋된 값이므로 “더러운 값”은 아니지만, 한 트랜잭션 안의 판단 기준은 깨진다.

1 T1 첫 SELECT

accounts.id=1 balance를 100으로 읽는다.

2 T2 UPDATE + COMMIT

같은 행을 50으로 바꾸고 커밋한다.

3 T1 두 번째 SELECT

같은 조건인데 이번에는 50이 보인다.

4 문제

T1 내부의 검증, 합계, 화면 표시가 서로 다른 기준값을 사용한다.

오손 읽기와 차이

읽은 값은 커밋된 값이다. 문제는 같은 트랜잭션 안의 일관성이다.

스냅샷 대응

REPEATABLE READ 계열은 보통 트랜잭션 단위 스냅샷으로 같은 행 값을 고정한다.