동시에 실행되는 여러 개의 트랜잭션이 작업을 성공적으로 마칠 수 있도록 트랜잭션의 실행 순서를 제어하는 기법이다.
트랜잭션을 식별하기 위하여 DBMS가 부여하는 유일한 식별자인 타임 스탬프를 지정하여 트랜잭션간의 순서를 미리 선택하는 동시성 제어 기법
시스템에 들어오는 트랜잭션의 순서대로 시간 스탬프를 지정하여 동시성 제어의 기준으로 사용한다.
교착상태를 방지 할 수 있으나 RollBack 발생률이 높고 연쇄 복귀를 초래할 수 있다.
운영방식
read_TS(x) : read(x) 연산을 성공적으로 수행한 트랜잭션들의 타임스탬프 중 가장 큰 것
write_TS(x) : write(x) 연산을 성공적으로 수행한 트랜잭션들의 타임스탬프 중 가장 큰 것
Timestamp 생성기법
논리적 계수기(Logical Count) : 트랜잭션이 발생할 때마다 카운터를 하나씩 증가한다.
시스템 클럭(System clock) : 트랜잭션이 시스템에 들어올때의 시스템 시각을 부여한다.
트랜잭션 수행 동안은 어떠한 검사도 하지 않고, 트랜잭션 종료 시에 일괄적으로 검사하는 기법.
트랜잭션 수행 동안 그 트랜잭션을 위해 유지되는 데이터 항목들의 지역 사본에 대해서만 갱신이 이루어진다.
트랜잭션 종료 시에 동시성을 위한 트랜잭션 직렬화가 검증되면 일시에 DB로 반영한다.
가. 트랜잭션의 실행을 3단계로 나눈다.
- R, V, W 로 나누어 실행
나. 트랜잭션에 3가지 타임 스탬프 사용한다.
다. 확인 검사 조건
TS(Ti)<TS(Tj)의 관계에 있는 모든 트랜잭션 Ti 에 대해 위 3가지 조건 중 하나만 만족하면 트랜잭션들 간에 간섭이 없는 것으로 보고 확인 검사를 성공 처리한다.
하나라도 만족하지 못하면 트랜잭션 간의 간섭이 일어났을 가능성이 있기 때문에 실패 처리한다.
라. 직렬 가능 순서
이 기법의 직렬가능성 순서는 Validation(Ti) 타임스탬프의 값에 기초한 순서로 결정되므로 트랜잭션 Ti의 타임스탬프는 실제로 Validation(Ti)이라고 할 수 있다.
따라서 트랜잭션 Ti와 Tj에 대해 TS(Ti) < TS(Tj)이면 실행된 스케줄은 반드시 Ti가 Tj보다 먼저 나오는 직렬 스케줄을 처리 해야한다.
트랜잭션이 한 데이터 아이템을 접근하려 할 때, 그 트랜잭션의 타임스탬프와 접근하려는 데이터 아이템의 여러 버전의 타임스탬프를 비교하여, 현재 실행하고 있는 스케줄의 직렬가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법이다.
** 하나의 데이터 아이템에 대해 여러 버전의 값 유지한다.
판독 요청을 거절하지도, 대기하지도 않음
기록보다 판독 연산이 주류를 이루는 데이터 베이스 시스템에 큰 이점
데이터 아이템을 판독할 때마다 중복되는 디스크 접근
트랜잭션간의 충돌문제는 대기가 아니라 복귀처리 함으로 연쇄 복귀초래 발생 가능성
다중 버전 동시성 제어의 절차 개요
다중 버전 동시성 제어 개념도
다중 버전 동시성 제어 원리 / 요소
예시
1) 트랜잭션 T1은 A구좌 값을 100에서 50으로 바꿀 때 롤백 세그먼트에는 A구좌 튜플의 잔액 어트리뷰트 값을 100에서 50으로 바꾸었다고 기록한다.
2) 이후 T2 트랜잭션에서 시점 2에서의 A구좌 튜플의 버전을 필요로 할 때는, 현재의 A구좌 잔액 100과 롤백 세그먼트에 기록된 50으로 바뀐 정보를 합해 잔액 100을 갖는 A구좌 튜플의 버전을 만들고 T2에서는 그 버전을 이용하게 된다.