2PL Locking, B+ Tree Locking 외에도 Timestamp를 사용해 C&C를 제공할 수있다. Timestamp CC를 통해 serailizable schedule을 보장하고 recoverability를 제공한다.
① TS
② RTS(Read-Timestamp)
③ WTS(Write-Timestamp)
① if TS(T) < WTS(O)
: 트랜잭션 T의 시작 시간이 O(object)가 쓰인 시간보다 빠르다.
즉, 트랜잭션이 객체를 수정(쓰기)하기 전에 해당 객체를 이미 다른 트랜잭션이 수정한 상태이므로 허용되지 않음
② if TS(T) > WTS(O)
: 트랜잭션이 시작보다 O(object)에 마지막으로 업데이트 된 시간이 더 빠르다.
즉, 트랜잭션이 객체를 수정하기 전에 해당 객체를 다른 트랜잭션이 이미 수정한 상태이므로 허용
=> Allow T to read O & Reset RTS(O) to max(RTS(O), TS(T))
① TS(T) < RTS(O) // 트랜잭션이 시작한 이후에 Object는 read 되었음. 만약 T가 Object를 수정하였다면 RTS(O)는 최신 데이터를 읽지 못했을 수 있음 => 충돌
Thomas Write Rule?
트랜잭션 Ti가 Write(x) 수행 시 TS(Ti) < write_TS(x) 이면 TS(Ti)가 write(x)를 실행한 것으로 간주하고 무시하는 것이 토마스 기록 규칙(Thomas write rule), 이는 write 연산의거부로 인한 트랜잭션의 취소를 감소시키기 위한 목적이다