データベーススペシャリスト平成31年春期 午前Ⅱ 問18

問18

DBMSの多版同時実行制御(MVCC)に関する記述として,適切なものはどれか。
  • 同時実行される二つのトランザクションのうち,先発のトランザクションがデータを更新し,コミットする前に,後発のトランザクションが同じデータを参照すると,更新前の値を返す。
  • トランザクションがデータを更新する前に専有ロックを,参照する前に共有ロックを掛け,コミットかロールバック後に全てアンロックする。
  • トランザクションがデータを更新する前に専有ロックを,参照する前に共有ロックを掛け,専有ロックはコミットかロールバック後までアンロックしないが,共有ロックは不必要になったらアンロックする。
  • トランザクションがデータを更新する前にロックを掛けず,コミット直前に他のトランザクションがそのデータを更新したかどうか確認し,更新していないときだけコミットする。

分類

テクノロジ系 » データベース » トランザクション処理

正解

解説

多版同時実行制御(MVCC:MultiVersion Concurrency Control)は、トランザクションからの読書き要求に対して、トランザクション開始時点における同じデータのスナップショットを提供するというアプローチにより、トランザクションの同時実行制御を行う仕組みです。

単版の2相ロックでは、専有ロック中のデータに対する参照はできず、共有ロック中のデータに対する更新はできません。この際、ロックの解除を待たなければならないことがトランザクションの同時実行における制約となっています。

多版同時実行制御では、各トランザクションが開始した時点におけるデータ項目の内容を「版」として保持しておき、並列実行されるトランザクションに対してこの「版」を提供します。これにより、読込みのロックと書込みのロックが競合することがなくなり、トランザクションの一貫性を保ったまま同時実行性を向上させます。

2つのトランザクションT1とT2が同時に実行される場合、多版同時実行制御はデータの状態を版(バージョン)ごとに管理します。なお、データの版として管理されるのはその時点における最新のコミット済データです。
  1. T1が開始する。MVCCはこの時点のデータXの版X1を生成する
  2. T1が資源Xを更新する
  3. T2が開始する。MVCCはこの時点のデータXの版X2を生成する
  4. T2はXの読込み要求を行う。MVCCはT2開始時の版であるX2を提供する
多版同時実行制御では上記例のように、更新中のデータに対して読込み要求があった場合、別のトランザクションが完了するのを待つのではなく、更新前の値を返します。したがって「ア」が適切な説明です。
  • 正しい。多版同時実行制御の説明です。
  • 2相ロッキングプロトコルの説明です。
  • 2相でないロッキングプロトコルの説明です。
  • 楽観的排他制御の説明です。
© 2016- データベーススペシャリストドットコム All Rights Reserved.

Pagetop