MVCCとは?
MVCCとは、更新時に古い版を残して新しい版を作り、参照するトランザクションには一貫した時点の版を返すことで、読取りと書込みが互いに待たされないようにする方式。
データベーススペシャリスト試験の過去問では3回出題されています(2019年度〜2024年度)。
エムブイシーシー
MVCCの意味
更新時に古い版を残して新しい版を作り、参照するトランザクションには一貫した時点の版を返すことで、読取りと書込みが互いに待たされないようにする方式。
MVCCの具体例
更新中の行を他のトランザクションが読んでも、更新前の版が返るので待たされない。
MVCCは試験でどう引っ掛けられる?
2相ロック方式では書込み中の行を読もうとすると待って新しい値を読むが、MVCCでは待たずに古い版を読む。この結果の違いが問われる。古い版を保持する領域の管理コストが必要になる。
MVCCと関連する用語
MVCCが出た過去問
DBMSの多版同時実行制御(MVCC)に関する記述として、適切なものはどれか。
正解:同時実行される二つのトランザクションのうち、先発のトランザクションがデータを更新し、コミットする前に、後発のトランザクションが同じデータを参照すると、更新前の値を返す。
要点:MVCCは版を保持し参照側に更新前の版を返して待ちを避ける
多版同時実行制御は、更新時に古い版を残して新しい版を作り、参照側にはそのトランザクションから見て整合する版を返す方式である。したがって未コミットの更新がある行を他のトランザクションが参照しても、更新前の版が返り、読み手が書き手を待たされない。
出典:令和1年度 春期 データベーススペシャリスト試験 am2 問18(IPA)多版同時実行制御(MVCC)の特徴のうち、適切なものはどれか。
正解:データ書込みに対して新しい版を生成し、同時にデータ読取りが実行されるときの排他制御による待ちを回避する。
要点:MVCCは版を作り分けて読取りを待たせない
多版同時実行制御は、更新の際に元の値を上書きせず新しい版を作り、読取り側には更新前の版を見せる方式である。これにより読取りが書込みのロック解放を待たされず、参照と更新を並行させられる。よってウが正しい。
出典:令和3年度 秋期 データベーススペシャリスト試験 am2 問16(IPA)トランザクションPが資源Xの値を4から5に更新した後にトランザクションQが開始し、Pがコミットする前にQが資源Xを参照しようとした。Qの挙動のa, bに入れる字…
正解:a: Pがコミット完了するまで待機した後、Xの値5を得る / b: Pのコミット完了を待機することなく、Xの値4を得る
要点:2相ロックは待って新値、MVCCは待たず旧版を読む
単版(シングルバージョン)の2相ロッキングでは、更新側が排他ロックを保持したままなので、読取り側はコミットまで待たされ、解放後は更新後の値を読む。一方MVCCは更新時に旧版を残すため、読取り側はロックを待たずにコミット済みの旧版、すなわち更新前の値を読める。READ COMMITTEDでは未コミットの新値を読むことはないので、待たずに読む場合の値は更新前の4になる。
出典:令和6年度 秋期 データベーススペシャリスト試験 am2 問14(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。