MVCC에 대해서 공부해보자

jin·2026년 2월 22일

MVCC가 무엇인가

Multi-Version Concurrency Control

데이터를 제자리에서 덮어쓰지 않고 변경 시 새로운 버전을 하나 더 만들어 둔다.
각 트랜잭션은 시작 시점(or 특정 시점)의 스냅샷을 기준으로 데이터를 읽기 때문에, 다른 트랜잭션이 수정중이어도 일관된 읽기가 가능하다. 덕분에 읽기 작업은 보통 락을 잡지 않고 수행되고, 쓰기 충돌이 날 때만 롤백, 재시도를 통해 정합성을 맞춘다.

MVCC와 격리수준과의 관계

  • Read Committed: 매 쿼리마다 최신 커밋 버전 기준으로 본다.
  • Repeatable Read: 트랜잭션 시작 시점 스냅샷을 유지한다. 따라서 한 트랜잭션 안에서는 동일한 스냅샷을 바라본다.
  • Serializable: 읽기 작업에도 배타적 락을 건다.
profile
성장중

0개의 댓글