メインコンテンツへ
データベースデータベース応用

MVCC(Multi-Version Concurrency Control)の仕組みと利点に関する記述として、最も適切なものはどれか。

ア.MVCCは1つの行に対しトランザクションごとに複数のバージョンを保持し、読み取りトランザクションは過去の整合性スナップショットを参照する。これにより読み取りは書き込みをブロックせず、書き込みも読み取りをブロックしないため並行性が大幅に向上する。PostgreSQLやOracle、MySQL InnoDBなどで採用される。正解
イ.MVCCは複数の物理サーバ間でデータをコピーする機構であり、replicationの一種である。
ウ.MVCCは行ロックを必ず取得しブロックするため、読み取りも書き込みも完全にシリアライズされ、整合性は高いが並行性は低い。
エ.MVCCは旧データを即時削除する方式であり、過去バージョンは一切保持されない。

解説

MVCCは「文書の改訂履歴を全部残しておき、各読者には〈自分が見始めた時のバージョン〉を見せる」方式。書き手と読み手が同時作業しても互いに邪魔せず、それぞれ筋の通った一貫したデータを参照できる仕組みです。

なぜ ア が正解か

アが正解。MVCCは更新時に旧行を削除せず別バージョンとして残し、トランザクション開始時刻に基づいて「自分から見えるべき最新有効バージョン」を選んで読む。READ COMMITTED/REPEATABLE READ等の分離レベルが軽量に実装でき、読み取りと書き込みが互いをブロックしないため、OLTP高並行ワークロードで大きな性能優位を持つ。PostgreSQL/Oracle/InnoDBが採用。古いバージョンは VACUUM/UNDO で後から回収。

なぜ イ は間違いか

レプリケーションは物理サーバ間データ複製の仕組みで、MVCCはあくまで単一DB内の並行制御技術。混同しがちだが別レイヤの概念。

なぜ ウ は間違いか

MVCCの強みは「読み取りは書き込みをブロックしない」並行性。ロック取得とシリアライズは2フェーズロックの説明で、MVCCとは逆の特徴を述べている。

なぜ エ は間違いか

MVCCの本質は「複数バージョンを保持」すること。即時削除すれば過去バージョン参照ができず、MVCCとして成立しない。

出典: AI生成問題(学習用)