読み方 : エムブイシーシー

MVCC【Multi-Version Concurrency Control】多版同時実行制御

概要

MVCCとは、データベースにおいて複数の処理を同時に実行する際、各データについて新旧の版(バージョン)を管理することで整合性と同時実行性を両立させる制御方式。同じデータに対して読み取りと書き込みが重なっても、互いに干渉せずスムーズに動作させることができる。
MVCCのイメージ画像

データベースでは、多数の利用者やアプリケーションが同時にデータの読み取りや更新を行うことがある。このとき、単純に排他ロックを用いて一方の処理が終わるまで他方を待たせる方式では、待ち時間が増え性能が低下する。MVCCでは、更新のたびにデータの新しい版を生成し、各処理が開始時点で有効な版を参照する。同じデータの読み取り処理と書き込み処理が互いを待つ必要がなくなり、応答速度や処理効率が向上する。

具体的には、各データの版ごとに、その版がいつ作成されたかを示すタイムスタンプトランザクションIDが付与される。データベースは、個々の処理が開始された時点での有効な版を適切に選択して提示する。例えば、ある集計処理が実行されている最中に別の処理でデータが書き換えられたとしても、集計処理側には開始時点の整合性が取れた古いデータが見え続けるため、計算結果が矛盾することはない。

一方で、古い版が溜まり続けるとディスク容量を圧迫するため、不要になった過去の版を掃除する「ガベージコレクション」や「バキューム」と呼ばれる後処理が必要となる。また、複数の処理が同時に同じデータを更新しようとした場合には、どちらの版を有効とするかといった競合解決のルールが適用される。MVCCは多くのリレーショナルデータベース管理システムで採用されている同時実行制御技術であり、高い同時実行性を求められる業務システムにおいて広く利用されている。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。