데이터베이스 타임스탬프 기법
From CS Wiki
- 트랜잭션에서 읽기 또는 쓰기 작업이 정상적으로 완료되면 타임스탬프를 기록한다.
- 트랜잭션에서 읽기 또는 쓰기 작업을 수행하려고 하는 경우 타임스탬프를 확인한다.
- 트랜잭션 수행 도중에 타임스탬프가 갱신된 경우 트랜잭션 작업을 중단한다.
- ex) T1이 11분11초에 시작되어 11분 13초에 a데이터를 업데이트 하려고 하는데, a데이터의 타임스탬프가 11분 12초인 경우 a데이터는 다른 트랜잭션에 의해 읽히거나 쓰인 상태이므로 현재 트랜잭션을 계속 실행하면 모순이 생기므로 ROLLBACK한다.
예시[edit | edit source]
- 데이터 항목 x에 대하여
- read_TS(x): x에 대한 읽기 작업이 최종적으로 성공한 시간
- write_TS(x): x에 대한 쓰기 작업이 최종적으로 성공한 시간
- 데이터 항목 x를 읽으려 하는 경우
- read(x) 보다 write_TS(x)가 더 최신인 경우, 읽기 작업을 포함한 트랜잭션 ROLLBACK
- 데이터 항목 x에 쓰려고 하는 경우
- wrtie(x) 보다 read_TS(x)가 더 최신인 경우, 쓰기 작업을 포함한 트랜잭션 ROLLBACK