회복 가능 조건

읽기 의존이 생기면, 쓴 트랜잭션의 커밋이 먼저 와야 합니다.

T2가 T1이 만든 값을 읽었다면 T2의 커밋은 T1의 확정 위에 서 있습니다. 그래서 순서의 기준은 읽기 시점이 아니라 커밋 순서입니다.

commit(T1) < commit(T2)
왜 안전한가

T1이 먼저 커밋되면 T2가 읽은 값의 근거가 사라지지 않습니다. 따라서 T2가 나중에 커밋해도 이미 확정된 데이터를 바탕으로 한 커밋이 되어 회복 가능합니다.

트랜잭션
1. 쓰기
2. 선행 커밋
3. 의존 읽기
4. 후속 커밋
T1
기록
A = 100 쓰기

아직은 다른 트랜잭션이 읽으면 위험한 미확정 상태입니다.

확정
COMMIT

이 시점부터 T1이 만든 값은 롤백 대상으로 남지 않습니다.

근거 유지
읽힐 값이 이미 확정됨

T2는 더티 읽기가 아니라 커밋된 결과를 읽게 됩니다.

상태
확정 상태 유지

T2의 후속 커밋 동안에도 읽은 근거가 계속 남아 있습니다.

T2
초기
T1 값에 아직 의존하지 않음

이 단계에서는 커밋 순서 제약이 아직 생기지 않습니다.

대기 기준
T1 커밋 이후가 안전 구간

읽은 뒤 커밋할 계획이라면, 먼저 작성자 확정이 필요합니다.

읽기
A = 100 읽기

이제 T2의 커밋은 T1의 확정된 결과를 근거로 합니다.

후속 커밋
COMMIT

읽은 근거가 남아 있으므로 T2의 커밋도 회복 가능합니다.

학습 포인트

회복 가능 스케줄의 핵심은 “누가 먼저 읽었나”가 아니라 “누가 먼저 확정되었나”입니다. 읽힌 값을 만든 트랜잭션이 먼저 커밋되어야 뒤의 커밋도 유효합니다.

T1: W(A)=100 -> T2: R(A)=100