공통 구조

문제는 잘못 읽은 값보다 그 값으로 이미 다음 작업이 시작된다는 점입니다.

오손 읽기는 미커밋 변경을 확정값처럼 사용하게 만들고, 이후 원 트랜잭션이 롤백되어도 그 판단은 자동으로 되돌아가지 않습니다.

1. 임시 변경 T1이 값을 바꾸지만 아직 커밋 전

DB 안에는 잠깐만 존재해야 할 중간 상태가 열려 있습니다.

2. 오손 읽기 T2가 그 값을 사실처럼 읽음

심사, 품절 판단, 집계 계산이 미커밋 값을 근거로 시작됩니다.

3. 롤백 이후 DB 값은 복구돼도 업무 결과는 남음

잘못 내려진 결론, 노출, 보고는 이미 바깥으로 퍼졌을 수 있습니다.

롤백이 복구하는 것 테이블 안의 원래 데이터 상태
롤백이 복구하지 못하는 것 그 값을 보고 이미 실행한 심사, 안내, 집계 같은 후속 판단
은행 이체 잔고 부족처럼 보여 대출 판단이 왜곡됨
잔고 100만원 → 0원 대출 심사: 거절 처리

실제 이체가 ROLLBACK되면 잔고는 돌아오지만, 이미 내려진 심사 판단은 별도로 바로잡아야 합니다.

재고 확인 판매 가능한 상품을 품절로 안내함
재고 100개 → 0개 상품 상태: 품절 표시

재고 조정이 취소되면 실제 재고는 남아 있어도, 고객에게 보여준 품절 안내는 한동안 사실과 어긋납니다.

통계 집계 임시값이 보고서 숫자까지 흔듦
SUM(금액): 90 → 120 보고서: 과대 집계

수정 중이던 금액이 롤백되면 데이터는 정상이어도, 그 시점에 만든 집계 결과와 운영 판단은 어긋날 수 있습니다.