데이터베이스 타임스탬프 기법

From IT 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