令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問16
多版同時実行制御(MVCC)の特徴のうち,適切なものはどれか。
解答・解説
正解: ウ. データ書込みに対して新しい版を生成し,同時にデータ読取りが実行されるときの排他制御による待ちを回避する。
多版同時実行制御(MVCC: Multi-Version Concurrency Control)は、データベース管理システム(DBMS)においてトランザクションの並行処理性能を向上させるための制御方式です。
MVCCの最大の特徴は、データが更新される際に元のデータを直接上書きするのではなく、更新前のデータの新しい版(バージョン)を生成して保持する点にあります。これにより、あるトランザクションがデータを書き込んでいる最中であっても、他のトランザクションは更新前の版(過去のスナップショット)を読み取ることができるため、読取り処理と書込み処理が互いにブロックし合うこと(排他制御による待ち)を回避できます。
したがって、適切な記述は「ウ」となります。
各選択肢の解説
- ア:誤り。MVCCを採用しているデータベースシステムであっても、アプリケーションプログラムから特定の行などに対して明示的な排他ロック(例えば
SELECT ... FOR UPDATEなど)をかけることは可能です。 - イ:誤り。トランザクションの分離レベル(アイソレーションレベル)などの設定に基づいて、DBMSが自動的に適切な版を選択して読み取ります。アプリケーションプログラムがデータアクセスの対象となる版を明示的に指定する必要はありません。
- ウ:正解。データ書込みに対して新しい版を生成し、同時にデータ読取りが実行されるときの排他制御による待ちを回避します。これがMVCCの主な目的と特徴です。
- エ:誤り。MVCCによって読取りと書込みの競合は回避されますが、複数のトランザクションが同時に同じデータを更新しようとする書込み同士の競合に対しては排他制御(ロック)が行われます。そのため、複数のトランザクションが互いにリソースの解放を待ち合うデッドロックが発生する可能性はあります。