Multi-Version Concurrency Control
MVCC(多版並行制御)は行ごとに複数のバージョンを保持し、読み取りはロックなしで一貫したスナップショットを用いることで、読み取りが書き込みをブロックしない高並行性を実現する。
目的
現代のデータベース(PostgreSQL/Oracle/InnoDB)における高並行読み取りの中核メカニズムを理解する。
メカニズム
各行はバージョンスタンプ(xmin/xmaxまたはトランザクションID)を持ち、読み取りはトランザクションスナップショットに基づいて可視バージョンをロックなしで選択する。書き込みは新しいバージョンを作成し旧バージョンを失効させる。デッドロックや書き込みスキューには追加の検出が必要である。
ユースケース
- 高並行読み取りのチューニング
- スナップショット分離の実装
- データベース内部構造