728x90
MVCC란?
데이터를 변경할 때마다 그 변경사항을 undo 영역에 저장하며, 이후 데이터를 읽다가 쿼리 시작 시점 이후에 변경된 값 발견 시 undo 영역에 저장하였던 정보를 이용하여 쿼리 시작 시점의 일관성 있는 버전(CR Copy)를 생성하고 읽는다.
MVCC는 문장수준과 트랜잭션 수준의 읽기 일관성이 존재한다.
문장수준 읽기 일관성
문장수준 읽기 일관성은, 다른 트랜잭션에 의해 데이터의 추가, 변경, 삭제가 발생하더라도 단일 SQL문 내에서 일관성 있게 값을 읽는 것을 이야기함.
- 일관성의 기준은 쿼리를 시작하였을 때 값을 이야기함.
트랜잭션 수준 읽기 일관성
트랜잭션 수준 읽기 일관성은, 다른 트랜잭션에 의해 데이터의 추가, 변경, 삭제가 발생하더라도 트랜잭션 내에서 일관성 있게 값을 읽는 것이다.
- Read Committed에서 완벽한 문장수준의 읽기 일관성을 보장하는 MVCC 매커니즘도 트랜잭션 수준의 읽기 일관성을 보장하지 않는다.
- 일반적인 Locking 매커니즘도 트랜잭션 수준의 읽기 일관성은 보장하지 않음
- 트랜잭션 수준으로 완벽한 읽기 일관성을 보장받으려면 격리성 수준을 Serializable Read로 올려주어야함
'Database' 카테고리의 다른 글
데이터베이스 Lock (0) | 2023.06.10 |
---|---|
Lock Escalation (0) | 2023.06.10 |
select for update 문 (0) | 2023.06.10 |
데이터베이스 교착상태 (0) | 2023.06.10 |
With 구문 (0) | 2023.06.10 |