読み方 : エムブイシーシー
MVCC【Multi-Version Concurrency Control】多版同時実行制御
概要

データベースでは、多数の利用者やアプリケーションが同時にデータの読み取りや更新を行うことがある。このとき、単純に排他ロックを用いて一方の処理が終わるまで他方を待たせる方式では、待ち時間が増え性能が低下する。MVCCでは、更新のたびにデータの新しい版を生成し、各処理が開始時点で有効な版を参照する。同じデータの読み取り処理と書き込み処理が互いを待つ必要がなくなり、応答速度や処理効率が向上する。
具体的には、各データの版ごとに、その版がいつ作成されたかを示すタイムスタンプやトランザクションIDが付与される。データベースは、個々の処理が開始された時点での有効な版を適切に選択して提示する。例えば、ある集計処理が実行されている最中に別の処理でデータが書き換えられたとしても、集計処理側には開始時点の整合性が取れた古いデータが見え続けるため、計算結果が矛盾することはない。
一方で、古い版が溜まり続けるとディスク容量を圧迫するため、不要になった過去の版を掃除する「ガベージコレクション」や「バキューム」と呼ばれる後処理が必要となる。また、複数の処理が同時に同じデータを更新しようとした場合には、どちらの版を有効とするかといった競合解決のルールが適用される。MVCCは多くのリレーショナルデータベース管理システムで採用されている同時実行制御技術であり、高い同時実行性を求められる業務システムにおいて広く利用されている。