공통 시작점

T1이 A를 수정했지만 아직 COMMIT하지 않았습니다.

두 변형의 차이는 하나입니다. X-Lock을 중간에 풀어 주느냐, 아니면 트랜잭션 종료까지 유지하느냐가 뒤의 읽기 결과와 롤백 범위를 갈라놓습니다.

Basic 2PL 연쇄 복귀
축소 단계에 들어가면 락을 먼저 풀 수 있음
Strict 2PL 전파 차단
X-Lock을 COMMIT/ROLLBACK까지 유지
락 처리
T1이 먼저 `UNLOCK(A)`
T2가 A에 접근할 길이 열립니다.
T1이 계속 잠금 유지
T2는 T1이 끝날 때까지 기다립니다.
T2가 보는 값
미확정 값 읽음
T2가 dirty read 성격의 값을 기반으로 진행할 수 있습니다.
미확정 값 못 읽음
T2는 확정된 값만 읽게 됩니다.
T1 롤백 후
A가 원래 값으로 복구
이미 잘못 읽은 T2도 함께 되돌릴 수 있어 연쇄 복귀가 생깁니다.
락이 그제야 해제
T2는 복구가 끝난 뒤 읽으므로 롤백이 T1 안에서 끝납니다.
핵심 이해

Strict 2PL의 본질은 직렬 가능성 자체보다 한 단계 더 나아가, 미완료 쓰기의 영향이 다른 트랜잭션으로 퍼지지 않게 막는 것입니다. 그래서 롤백이 생겨도 추가 복구가 전파되지 않습니다.