データベーススペシャリスト令和6年秋期 午前Ⅱ 問14

問14

トランザクションPが資源Xの値を4から5に更新した後にトランザクションQが開始し,Pがコミットする前にQが資源Xを参照しようとした。Qの挙動のa,bに入れる字句の組みはどれか。ただし,隔離性水準はREAD COMMITTEDとする。

〔Qの挙動〕
同時実行制御が単版2相ロッキングプロトコルの場合Qはa,多版同時実行制御(MVCC)の場合Qはb
  • 14.png/image-size:590×200
            

分類

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

正解

解説

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

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

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

なお、設問では隔離性水準がREAD COMMITTEDとされているため、ダーティリード(コミットされていないデータの読取り)は発生しないことに注意が必要です。

〔単版の2相ロックの場合〕
  1. トランザクションPが資源Xを4から5に更新する
  2. トランザクションQが開始する
  3. トランザクションQが資源Xの参照を要求する
  4. 資源Xはコミット前なので、READ COMMITTEDの制約によりトランザクションQはコミットを待つ
  5. トランザクションPがコミットする
  6. トランザクションQはコミットされた資源Xの値5を読み込む
〔多版同時実行制御(MVCC)の場合〕
  1. トランザクションPが資源Xを4から5に更新する
  2. トランザクションQが開始する。MVCCはこの時点の資源Xの版「XQ=4」を生成する
  3. トランザクションQが資源Xの参照を要求する
  4. MVCCにより、トランザクションQの開始時における資源Xの版「XQ」が提供される。トランザクションQはXQの値4を読み込む
2相ロックでは先行トランザクションのコミットを待って値5を読み込みますが、多版同時実行制御ではトランザクション開始時における(最終コミットである)値4を読み込むことになります。したがって「イ」が適切な組合せです。
© 2016- データベーススペシャリストドットコム All Rights Reserved.

Pagetop