본문 바로가기
정보관리기술사/데이터베이스

병행 제어 기법 - 다중 버전 병행 제어(MVCC)

by 두음달인 2022. 8. 23.
반응형

다중 버전 병행 제어(Multi Version Concurrency Control, MVCC)

 

트랜잭션의 데이터 접근 시,
그 트랜잭션의 타임스탬프와 접근 데이터의 여러 버전의 타임스탬프를 비교하여,
현재 실행 중인 스케줄의 직렬 가능성이 보장되는 버전을 선택하는 기법
  • ORACLE 버전 3, MS SQL Server 2005, IBM DB2 9.7 버전부터 MVCC 지원

 

기존 로킹(Locking) 기법의 문제점

 

동시성 제어 목표는 병행성을 최대화하면서 데이터 무결성을 유지하는 것인데, 

Locking은 제약이 존재합니다. 이에 대한 개선으로 MVCC 활용 가능하다네요.

 

  • 동시성 제어의 목표는 병행성을 최대화하면서도 데이터 무결성 유지
  • 읽기 작업에 공유 Lock을 사용하는 일반적인 로킹 기법은 읽기·쓰기 작업이 서로 방해 유발
  • 데이터 일관성을 위해 로킹 강화 → 동시성 저하 발생
MVCC 동작 개념도

 

국민 그림, 주요 키워드가 보이게 도식화 필요합니다. 

SCN, Rollback Segment(Undo) 등

 

 

  • 데이터를 변경할 대마다 그 변경사항을 UNDO 영역에 저장
  • 데이터를 읽다가 트랜잭션 시작 시점 이후에 변경된 값을 발견하면, UNDO 영역에 저장된 정보를 이용해 트랜잭션 시작 시점의 일관성 있는 버전(CR Copy)를 사용
MVCC 장단점

 

  •  장점
- 문장수준 읽기 일관성 보장, 트랙잭션 수준 읽기 일관성 보장 가능
- 쿼리 도중 배타적 Lock이 걸린, 즉 변경이 진행 중인 레코드를 만나더라도 대기하지 않기 때문에 동시성 측면에 유리
- 쓰기보다 읽기 연산이 많은 경우 효율 향상

 

  • 단점
- UNDO 블록 I/O, CR Copy 생성, CR 블록 캐싱과 같은 부가적인 작업의 오버헤드 발생
- 트랜잭션 충돌시 복귀처리하므로, 연쇄 복귀 초래 가능성

 


  • 다중 버전 병행제어(Multi-version, Concurrency Control)
- 여러 버전의 타임스탬프를 비교하여 스케줄상 직렬가능성이 보장되는 타임스탬프를 선택
- 충돌이 발생할 경우 복귀 수행. 연쇄 복귀 발생 가능성

 


참고 자료

 

다중 버전 병행제어 - IT위키 (itwiki.kr)

 

IT위키

IT에 관한 모든 지식. 함께 만들어가는 깨끗한 위키

itwiki.kr

 

반응형

댓글