토픽 47 / 201·무결성 및 트랜잭션
MVCC (Multi-Version Concurrency Control)
MVCC (Multi-Version Concurrency Control)
데이터의 여러 버전(Multi-Version)을 유지하여 읽기와 쓰기가 서로 블로킹하지 않도록 하는 동시성 제어 기법
특징: 읽기 시 잠금 불필요(높은 동시성), 저장공간 증가(구 버전 유지), 가비지 컬렉션 필요
구성요소
- •버전 체인(Version Chain): 데이터의 이전/현재 버전 연결
- •트랜잭션 ID: 각 트랜잭션에 부여되는 고유 식별자
- •가시성 규칙(Visibility Rule): 트랜잭션이 어떤 버전을 볼 수 있는지 결정
동작원리
- •쓰기 시 새 버전 생성, 이전 버전 유지
- •읽기 시 트랜잭션 시작 시점 기준 Snapshot으로 일관된 읽기
- •구 버전은 Vacuum(PostgreSQL) 또는 Undo 세그먼트 정리(Oracle)로 회수
적용사례: PostgreSQL(Snapshot Isolation), Oracle(Undo 세그먼트), MySQL InnoDB(Undo Log)
비교: MVCC(읽기무잠금/높은동시성/공간증가) vs Locking(읽기잠금/낮은동시성/공간절약)
연관: 동시성 제어, 격리 수준, 스냅샷 격리, Vacuum