Multiversion Schemes
- multiversion 은 옛날 값도 다 유지한다. → 버전이 여러가지
- commit 발생 → 새로운 버전의 데이터 항목이 생성됩니다.
- 타임스태프는 늦을 수록 값이 커진다.
- 날짜로 저장되는게 아니라 기준날짜로부터 정수값으로 저장됨
- read 할때는 lock 이랑 관계없이 대기없이 바로 가능하다. → 빠름
- 알맞은 time-stamp Version 제공
- 크게 두가지 방식이 있다.
- multiversion time-stamp ordering
- multiversion two-phase locking
Multiversion Timestamp Ordering
- 타임스태프를 만드는 법을 설명한다.
- version = content + W-timestamp + R-timestamp
- W-timestamp
- ex)Q2 : 10 이저장 → 10이라는 트랜잭션이 Q2를 만들었다.
- R-timestamp
- 가장 마지막에 이것을 읽은 트랜잭션을 저장(숫자가 더 큰것)
- ex) T1 → Q1 (버전)을 만듬 → W,R-timestamp 모두 : TS(T1) 으로 설정
- 읽기 연산은 항상 빠르게 성공, 쓰기는 rollback 가능
- conflict 를 전부 rollback 한다는 문제 (wait X)
- 데이터 공간 오버헤드 증가
Multiversion Timestamp 연산 처리법
- Tᵢ → Read 요청이 들어오면
- W-timestamp 가 TS(Tᵢ) 보다 작은 것들 중에 가장 큰 버전 내용
- 그대로 버전 내용 내보냄
- Tᵢ → Write 요청이 들어오면
- W-timestamp 가 TS(Ti) 보다 작은 것들 중에 가장 큰 버전 내용 가져옴
- TS(Tᵢ) < R-timestamp(Qₖ) : Rollback
- TS(Tᵢ) = W-timestamp(Qₖ) : Qₖ 내용 덮어쓴다.
- 나머지 : 새로운 버전 만들어냄
저번 : 시리얼라이즈 스킬에서 동등한 시리얼라이즈 : 락포인트 순서대로 만든다.