비회복 스케줄의 문제

더티 읽기 뒤에 읽은 쪽이 먼저 commit되면, 나중에 근거가 사라져도 되돌릴 수 없습니다.

핵심은 연산 자체보다 의존 관계와 commit 순서입니다. T2가 T1의 미확정 값을 읽은 상태에서 먼저 확정되면, 뒤늦은 T1 롤백이 T2까지 안전하게 되돌아가게 만들 수 없습니다.

시간 흐름 →
1단계 T1이 값 씀
2단계 T2가 그 값을 읽음
3단계 T2가 먼저 commit
4단계 T1이 rollback
T1
미커밋 쓰기
W1(A = 100)

새 값은 생겼지만 아직 확정되지 않았습니다.

근거 취소
ROLLBACK(T1)

A = 100 자체가 무효가 되어 T2가 읽은 근거가 사라집니다.

T2
더티 읽기
R2(A = 100)

T1이 아직 commit하지 않은 값을 읽어 의존합니다.

잘못된 순서
COMMIT(T2)

읽은 쪽이 먼저 확정되어, 이후 취소 전파가 막힙니다.

의존 관계
R2(A = 100)의 근거는 W1(A = 100)입니다.

T2는 독립적으로 commit한 것이 아니라, T1의 미커밋 결과를 사용한 뒤 commit했습니다.

왜 회복 불가능한가
commit 순서가 COMMIT(T2) → ROLLBACK(T1) 이기 때문입니다.

되돌려야 할 대상인 T2가 이미 확정되어 있어서, T1 실패 이후에도 안전하게 복구할 수 없습니다.