Strict

엄격한 스케줄은 미완료 쓰기 대상을 보호한다

다른 트랜잭션이 쓴 항목은 그 트랜잭션이 커밋/롤백될 때까지 건드리지 않는다. 더티 읽기뿐 아니라 미완료 쓰기 대상의 덮어쓰기까지 막기 때문에 장애 후 복구가 단순해진다.

차단
복구 쉬움
구현 차이
읽기 제한

미커밋 쓰기 값을 읽지 않는다. 읽는 쪽은 작성자가 커밋하거나 롤백될 때까지 기다린다.

쓰기 제한

미완료 쓰기 대상에 덮어쓰지 않는다. 같은 항목에 대한 W-W 충돌을 트랜잭션 종료 뒤로 미룬다.

구현

Strict 2PL, MVCC, 잠금 정책이 DBMS별로 조합된다.

복구 관점

실패한 트랜잭션의 변경을 되돌릴 때, 다른 커밋된 트랜잭션이 그 값을 이미 읽거나 덮어쓴 상태가 아니므로 Undo 범위가 명확하다.

구분할 점

Cascadeless는 미커밋 값을 읽지 않는 데 초점이 있고, Strict는 같은 항목의 쓰기까지 트랜잭션 종료 전에는 막는 더 강한 조건이다.

시험이나 설계 검토에서는 “미커밋 값을 읽었는가”와 “미완료 쓰기 항목을 다시 썼는가”를 따로 표시하면 strict 여부를 빠르게 판별할 수 있다.