平成31年春期試験問題 午前Ⅱ 問18

DBMSの多版同時実行制御(MVCC)に関する記述として,適切なものはどれか。

  • 同時実行される二つのトランザクションのうち,先発のトランザクションがデータを更新し,コミットする前に,後発のトランザクションが同じデータを参照すると,更新前の値を返す。
  • トランザクションがデータを更新する前に専有ロックを,参照する前に共有ロックを掛け,コミットかロールバック後に全てアンロックする。
  • トランザクションがデータを更新する前に専有ロックを,参照する前に共有ロックを掛け,専有ロックはコミットかロールバック後までアンロックしないが,共有ロックは不必要になったらアンロックする。
  • トランザクションがデータを更新する前にロックを掛けず,コミット直前に他のトランザクションがそのデータを更新したかどうか確認し,更新していないときだけコミットする。
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:トランザクション処理
解説
多版同時実行制御(MVCC:MultiVersion Concurrency Control)は、複数の利用者から同時にデータベースの更新要求を受け取った場合でも、同時並行性と一貫性の両方を保証する仕組みです。
(単版の)2相ロックでは、専有ロック中のデータに対する参照はできず、共有ロック中のデータに対する更新はできません。これに対し、多版同時実行制御では、更新中のデータに対する参照要求に対してトランザクション開始時点のデータのコピー(スナップショット)を提供します。同様に、参照中のデータに対する更新要求に対して、トランザクション開始前のデータのコピーを提供します。これにより、読込みのロックと書込みのロックが競合することがなくなり、トランザクションの同時並行性が向上します。

多版同時実行制御では、更新中のデータに対して読込み要求があった場合に、更新前の値を返します。したがって「ア」が適切な説明です。
  • 正しい。多版同時実行制御の説明です。
  • 2相ロッキングプロトコルの説明です。
  • 2相でないロッキングプロトコルの説明です。
  • 楽観的排他制御の説明です。

Pagetop