トランザクションPが資源Xの値を4から5に更新した後にトランザクションQが開始し、Pがコミットする前にQが資源Xを参照しようとした。Qの挙動のa, bに入れる字句の組みはどれか。ただし、隔離性水準はREAD COMMITTEDとする。 〔Qの挙動〕 同時実行制御が単版2相ロッキングプロトコルの場合Qは[ a ]、多版同時実行制御(MVCC)の場合Qは[ b ]。
2相ロックは待って新値、MVCCは待たず旧版を読む
選択肢
- ア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を得る
正解と解説
正解:ア a: Pがコミット完了するまで待機した後、Xの値5を得る / b: Pのコミット完了を待機することなく、Xの値4を得る
単版(シングルバージョン)の2相ロッキングでは、更新側が排他ロックを保持したままなので、読取り側はコミットまで待たされ、解放後は更新後の値を読む。一方MVCCは更新時に旧版を残すため、読取り側はロックを待たずにコミット済みの旧版、すなわち更新前の値を読める。READ COMMITTEDでは未コミットの新値を読むことはないので、待たずに読む場合の値は更新前の4になる。
選択肢ごとの解説
- ア正しい。2相ロックでは待って新値を、MVCCでは待たずにコミット済みの旧値を読む。
- イMVCCで未コミットの新値を読むことになり、READ COMMITTEDに反する。
- ウ2相ロックで排他ロックを無視して読める前提になっており、ロックの働きと矛盾する。
- エ2相ロックで待たずに未コミット値を読む点も、MVCC側の説明も入れ替わっており誤り。
同じ分野の他の問題
- 二つのトランザクションT1とT2を並列に実行した結果が、T1の完了後にT2を実行した結果、又はT2の完了後にT1を実行し…2025年度 秋期 午前II 問16
- 二つのトランザクションT1とT2を並列に実行した結果が、T1の完了後にT2を実行した結果、又はT2の完了後にT1を実行し…2023年度 秋期 午前II 問17
- 2相ロック方式を用いたトランザクションの同時実行制御に関する記述のうち、適切なものはどれか。2023年度 秋期 午前II 問12
- 多版同時実行制御(MVCC)の特徴のうち、適切なものはどれか。2021年度 秋期 午前II 問16
- 2相ロック方式を用いたトランザクションの同時実行制御に関する記述のうち、適切なものはどれか。2021年度 秋期 午前II 問13
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。