728x90
반응형
다중버전 동시성제어
(MVCC; Multiversion concurrency control)
[개념] 트랜잭션이 데이터 아이템에 접근 시 데이터 아이템의 다중버전 상태 중 직렬 가능성이 보장되는 버전을 선택하여 처리하는 기법
[특징] UNDO영역(Rollback Segment), CR Copy(일관된 읽기)
[프로세스] 데이터 변경발생 → Undo영역에 저장 → CR Copy생성 → Trx보다 버전이 최신인 값 발견 → Undo영역의 CR Copy Read
[세부절차]
1)데이터 변경시 변경사항을 Undo영역 저장
2)쿼리시작시점 이후에 변경된 값을 발견하면, Undo 영역에 저장된 정보를 이용해 쿼리시작시점의 일관성 있는 버전을 생성하고 READ
3)Undo 블록 I/O, CR 블록 캐싱 등의 부가적인 오버헤드가 발생
[세부]Ti가 Read(Q)실행-반환되는 값은 버전 Qk의 내용
Ti가 Write(Q)실행
TS(Ti) < R-Timestamp(Qk)면 Ti는 복구
TS(Ti) < W-Timestamp(Qk)이면 Qk의 내용은 Overwritten
그 외의 경우에는 Q의 새로운 버전 생성
W-Timestamp(Qk) :버전 Qk를 생성한 트랜잭션의 타임스탬프
R-Timestamp(Qk) : 버전 Qk를 성공적으로 판독한 트랜잭션중 가장 큰 값
[고려사항]1)Snapshot Too Old 문제 → Undo크기 조절, 불필요한 Commit 줄임. 너무 긴 트랜잭션 조정 수행
728x90
'04.Database' 카테고리의 다른 글
정규화 - 연결 함정 (Connection Trap) (0) | 2020.06.08 |
---|---|
Migration - DB 성능개선 - 튜닝, 리팩토링, 마이그레이션 (0) | 2020.06.08 |
데이터 거버넌스 - 빅데이터 거버넌스 (0) | 2020.06.08 |
동시성 제어 - Locking (0) | 2020.06.05 |
DB 언어 - 동적 쿼리 (0) | 2020.06.05 |