平成31年度 春期 データベーススペシャリスト試験 午前Ⅱ 問18
テクノロジ/データベースDBMSの多版同時実行制御(MVCC)に関する記述として,適切なものはどれか。
出典:平成31年度 春期 データベーススペシャリスト試験 午前Ⅱ 問18
- ア同時実行される二つのトランザクションのうち,先発のトランザクションがデータを更新し,コミットする前に,後発のトランザクションが同じデータを参照すると,更新前の値を返す。
- イトランザクションがデータを更新する前に専有ロックを,参照する前に共有ロックを掛け,コミットかロールバック後に全てアンロックする。
- ウトランザクションがデータを更新する前に専有ロックを,参照する前に共有ロックを掛け,専有ロックはコミットかロールバック後までアンロックしないが,共有ロックは不要になったらアンロックする。
- エトランザクションがデータを更新する前にロックを掛けず,コミット直前に他のトランザクションがそのデータを更新したかどうか確認し,更新していないときだけコミットする。
正解:ア
解説
多版同時実行制御(MVCC)は,データの更新時に新しいバージョン(版)を作成して古い版を残しておくことで,参照側のトランザクションがロックを待つことなく,更新がコミットされる前の一貫した版(スナップショット)を参照できるようにする方式です。これにより,先発のトランザクションがデータを更新してコミットする前に,後発のトランザクションが同じデータを参照すると,更新前の(コミット前の)版の値が返されます。
選択肢ごとの解説
- ア正しい。MVCCでは,更新中のデータに対して後発のトランザクションが参照を行うと,コミット前の更新前の版(スナップショット)の値が返されるため,ロックを待たずに一貫した読み取りができます。
- イ誤り。更新前に専有ロック,参照前に共有ロックを掛けてコミットまで保持する方式は,従来のロックベースの2相ロック方式の説明であり,ロックを用いずに版管理で同時実行制御を行うMVCCの説明ではありません。
- ウ誤り。専有ロックと共有ロックを使い分けてアンロックのタイミングを制御する方式は,ロックベースの同時実行制御の説明であり,複数の版を保持して読み取りを実現するMVCCの説明ではありません。
- エ誤り。ロックを掛けずにコミット直前に競合の有無を確認してからコミットする方式は,楽観的制御法(楽観的同時実行制御)の説明であり,版を複数保持して参照を実現するMVCCの説明ではありません。