다중버전일관성(Multi-Version Concurrency Control, MVCC)은 데이터베이스 시스템에서 동시성을 확보하면서도 일관된 데이터 읽기를 지원하는 기술적인 접근 방식 중 하나입니다.
MVCC는 여러 트랜잭션이 동시에 데이터베이스에 접근할 때 각 트랜잭션이 일관성 있는 데이터를 읽을 수 있도록 하는 데 중점을 둡니다.
MVCC는 다음과 같은 원리에 기반하고 있습니다:
1. **버전 관리:**
MVCC는 데이터베이스에 있는 각 행(row)에 대해 여러 버전을 유지합니다. 각 트랜잭션이 시작될 때, 해당 트랜잭션에 대한 일관된 데이터 스냅샷을 생성합니다.
2. **읽기 일관성:**
트랜잭션이 데이터를 읽을 때, 해당 트랜잭션의 시작 시점에 일관된 데이터 버전을 제공합니다. 다른 트랜잭션이 동일한 데이터를 수정하더라도, 읽는 트랜잭션은 그 수정 사항이 반영되기 전의 데이터를 읽게 됩니다.
3. **트랜잭션 간 격리:**
각 트랜잭션은 자신만의 데이터 스냅샷을 유지하고 다른 트랜잭션의 수정 사항에 대해 격리됩니다. 이로써 서로 간섭 없이 동시에 여러 트랜잭션이 진행될 수 있습니다.
4. **버전 비교와 관리:**
데이터베이스 관리 시스템은 각 트랜잭션에 대한 버전 관리를 수행합니다. 이는 트랜잭션이 수정하거나 커밋할 때마다 새로운 데이터 버전을 생성하고, 트랜잭션이 롤백할 때는 해당 트랜잭션에 대한 변경 사항을 취소하고 이전 버전으로 롤백합니다.
MVCC는 주로 읽기 작업이 많은 시나리오에서 성능을 향상시키는 데 사용됩니다.
이 모델은 동시성을 확보하면서도 데이터 일관성을 유지하므로, 많은 사용자가 동시에 데이터베이스에 접근하는 경우에 특히 유용합니다. 많은 관계형 데이터베이스 시스템, 특히 PostgreSQL와 Oracle 등에서 MVCC가 적용되고 있습니다.
'데이터 아키텍처 & 처리기술 & DBMS > Oracle' 카테고리의 다른 글
query scn과 block scn의 차이점은? (0) | 2023.12.21 |
---|---|
SCN(System Commit Number) (0) | 2023.12.21 |
oracle undo segment에서 cr copy (0) | 2023.12.21 |
Read Committed (0) | 2023.12.21 |
테이블 레벨 Lock 읽기 일관성 확보 (0) | 2023.12.21 |