반복 불가능 읽기의 핵심은 숫자 변화 자체보다, T1이 처음 읽은 값으로 결정을 내린 뒤 실제 UPDATE는 이미 바뀐 최신 상태를 기준으로 처리된다는 점입니다.
잔액 100만원을 읽고 출금을 진행해도 된다고 판단
애플리케이션 로직은 이 값을 기준으로 다음 단계를 준비합니다.
DB 최신값도 아직 100만원
이 시점에는 판단과 실제 상태가 일치합니다.
T1은 여전히 처음 읽은 값이 유효하다고 생각
체크 로직은 그대로 남아 있어 출금 가능 판단이 유지됩니다.
다른 트랜잭션 T2가 먼저 커밋해 잔액을 50만원으로 변경
데이터베이스의 최신 기준은 이미 바뀌었습니다.
T1은 100만원 기준으로 출금을 계속 진행
검증은 예전 상태에서 끝났지만, 실행은 이미 달라진 상태 위에서 일어납니다.
실제 차감은 50만원 기준으로 처리되어 모순 결과가 발생
예: 80만원 출금을 승인하면 결과가 -30만원이 될 수 있습니다.
반복 불가능 읽기는 "같은 값을 다시 읽었더니 달라졌다"로 끝나지 않습니다. 첫 조회를 바탕으로 세운 비즈니스 규칙이 실행 시점에는 더 이상 유효하지 않아, 승인·차감·검증 같은 후속 처리 전체가 틀어질 수 있습니다.