평가영역
- 상세 평가영역 없음
타임스탬프
데이터베이스 시스템으로 입력된 복수의 트랜잭션에 대하여 입력된 시간에따라 타임스탬프를부여하는 기법으로아래의 두가지 방법이 있다.
- 시스템 시계의 값을 타임스탬프로 사용
- 새로운 타임스탬프가 할당된 후에 증가하는 계수기(counter)를 사용
또한 read와 write 트랜잭션을 다르게 관리하기위해(read인지 write인지에 따라 동시성제어가 달라지므로) 아래와 같은 2개의 값을 이용한다.
- R-타임스탬프(Q): read(Q)를 성공적으로 실행한 트랜잭션중에서 가장 큰 타임스탬프
- W-타임스탬프(Q): write(Q)를 성공적으로 실행한 트랜잭션중에서 가장 큰 타임스탬프
이들은 새로운 read(Q)와 write(Q) 명령을 실행할 때마다 갱신한다.
중요한것은 빠른 타임스탬프가 찍힌 트랜잭션을 실행하는것이다.(타임스탬프가 작은쪽이 더 빨리 실행된다)
- read 트랜잭션이 실행요청 들어왔을때
- read요청 < W-타임스탬프(Q)이면: 가장 최근에 write되기 전의 데이터를 보여달라는 요청이므로 read거절
- read요청 >= W-타임스탬프(Q)이면: 가장 최근에 write된 후의 데이터를 보여달라는 요청이므로 read승인
- write 트랜잭션이 실행요청 들어왔을때
- write요청 < R-타임스탬프(Q)이면: 이미 조회가 끝난 값을 write할 필요가없기 대문에 write거절
- write요청 < W-타임스탬프(Q)이면: 가장 최근에 write가 끝난 값이기 때문에 write거절
- 이외의 경우는 wirte 실행되고 W-타임스탬프(Q) 갱신