平成31年春期試験問題 午前Ⅱ 問18
問18解説へ
DBMSの多版同時実行制御(MVCC)に関する記述として,適切なものはどれか。
- 同時実行される二つのトランザクションのうち,先発のトランザクションがデータを更新し,コミットする前に,後発のトランザクションが同じデータを参照すると,更新前の値を返す。
- トランザクションがデータを更新する前に専有ロックを,参照する前に共有ロックを掛け,コミットかロールバック後に全てアンロックする。
- トランザクションがデータを更新する前に専有ロックを,参照する前に共有ロックを掛け,専有ロックはコミットかロールバック後までアンロックしないが,共有ロックは不必要になったらアンロックする。
- トランザクションがデータを更新する前にロックを掛けず,コミット直前に他のトランザクションがそのデータを更新したかどうか確認し,更新していないときだけコミットする。
正解 ア問題へ
分野 :テクノロジ系
中分類:データベース
小分類:トランザクション処理
中分類:データベース
小分類:トランザクション処理
広告
解説
多版同時実行制御(MVCC:MultiVersion Concurrency Control)は、トランザクションからの読書き要求に対して、トランザクション開始時点における同じデータのスナップショットを提供するというアプローチにより、トランザクションの同時実行制御を行う仕組みです。
単版の2相ロックでは、専有ロック中のデータに対する参照はできず、共有ロック中のデータに対する更新はできません。この際、ロックの解除を待たなければならないことがトランザクションの同時実行における制約となっています。
多版同時実行制御では、各トランザクションが開始した時点におけるデータ項目の内容を「版」として保持しておき、並列実行されるトランザクションに対してこの「版」を提供します。これにより、読込みのロックと書込みのロックが競合することがなくなり、トランザクションの一貫性を保ったまま同時実行性を向上させます。
2つのトランザクションT1とT2が同時に実行される場合、多版同時実行制御はデータの状態を版(バージョン)ごとに管理します。なお、データの版として管理されるのはその時点における最新のコミット済データです。
単版の2相ロックでは、専有ロック中のデータに対する参照はできず、共有ロック中のデータに対する更新はできません。この際、ロックの解除を待たなければならないことがトランザクションの同時実行における制約となっています。
多版同時実行制御では、各トランザクションが開始した時点におけるデータ項目の内容を「版」として保持しておき、並列実行されるトランザクションに対してこの「版」を提供します。これにより、読込みのロックと書込みのロックが競合することがなくなり、トランザクションの一貫性を保ったまま同時実行性を向上させます。
2つのトランザクションT1とT2が同時に実行される場合、多版同時実行制御はデータの状態を版(バージョン)ごとに管理します。なお、データの版として管理されるのはその時点における最新のコミット済データです。
- T1が開始する。MVCCはこの時点のデータXの版X1を生成する
- T1が資源Xを更新する
- T2が開始する。MVCCはこの時点のデータXの版X2を生成する
- T2はXの読込み要求を行う。MVCCはT2開始時の版であるX2を提供する
- 正しい。多版同時実行制御の説明です。
- 2相ロッキングプロトコルの説明です。
- 2相でないロッキングプロトコルの説明です。
- 楽観的排他制御の説明です。
広告