令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問14
テクノロジ/データベーストランザクション P が資源 X の値を 4 から 5 に更新した後にトランザクション Q が開始し,P がコミットする前に Q が資源 X を参照しようとした。Q の挙動の a,b に入れる字句の組合せはどれか。ただし,隔離性水準は READ COMMITTED とする。 〔Q の挙動〕 同時実行制御が単版 2 相ロッキングプロトコルの場合 Q は[ a ],多版同時実行制御(MVCC)の場合 Q は[ b ]。 (注:本サイトでは原問題の表を文字表記に変換しています)
出典:令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問14
- アa:P がコミット完了するまで待機した後,X の値 5 を得る,b:P のコミット完了を待機することなく,X の値 4 を得る
- イa:P がコミット完了するまで待機した後,X の値 5 を得る,b:P のコミット完了を待機することなく,X の値 5 を得る
- ウa:P のコミット完了を待機することなく,X の値 4 を得る,b:P のコミット完了を待機することなく,X の値 5 を得る
- エa:P のコミット完了を待機することなく,X の値 5 を得る,b:P のコミット完了を待機することなく,X の値 4 を得る
正解:ア
解説
単版 2 相ロッキングプロトコルでは,P が X に対する更新ロックを保持している間,Q は X を読むために P のコミット(ロック解放)を待たされ,コミット後の最新値である 5 を読み取ります。一方,多版同時実行制御(MVCC)では,読取り時にロックを取得せず,読取り時点で確定していた版(P の更新前,つまりコミット前)のデータを参照するため,Q は P のコミットを待つことなく,更新前の値である 4 を読み取ります。
選択肢ごとの解説
- ア正しい。単版 2 相ロッキングでは P のコミットを待って最新値 5 を得て,MVCC では P のコミットを待たず更新前の値 4 を得ます。
- イ誤り。MVCC では P のコミットを待たずに読み取るため,コミット後の値である 5 を得ることはできません。読み取れるのは更新前の値 4 です。
- ウ誤り。単版 2 相ロッキングでは,P が X の排他ロックを保持している間 Q は読取りができず,P のコミットを待たずに値を得ることはできません。
- エ誤り。単版 2 相ロッキングでは P のコミットを待って値 5 を得ますが,MVCC ではコミット前の値である 4 を得るのであって 5 ではありません。