ホーム > データベーススペシャリスト試験 > 2024年
データベーススペシャリスト試験 2024年 午前2 問14
トランザクションPが資源Xの値を4から5に更新した後にトランザクションQが開始し, Pがコミットする前にQが資源Xを参照しようとした。Qの挙動のa, bに入れる字句の組みはどれか。ただし, 隔離性水準はREAD COMMITTEDとする。
〔Qの挙動〕
同時実行制御が単版2相ロッキングプロトコルの場合Qは(a), 多版同時実行制御(MVCC)の場合Qは(b)。

ア:(正解)
イ:
ウ:
エ:
解説
トランザクションの同時実行制御に関する問題【午前2 解説】
要点まとめ
- 結論:単版2相ロッキングではQはPのコミット完了まで待機し、MVCCでは待機せずにコミット前の値を参照する。
- 根拠:READ COMMITTEDの隔離レベルでは、単版2PLはコミット済みデータのみ読み込み可能でロック待ちが発生する。MVCCはコミット前の古いスナップショットを参照できるため待機不要。
- 差がつくポイント:単版2PLとMVCCの挙動の違いを理解し、コミット前の更新値の読み取り可否を正確に把握すること。
正解の理由
単版2相ロッキング(2PL)では、トランザクションQが資源Xを読み取る際、Pがまだコミットしていないためロックが解放されておらず、QはPのコミット完了まで待機します。したがってQはコミット後の値5を取得します。一方、MVCC(多版同時実行制御)では、QはPのコミットを待たずにコミット前の古いバージョン(値4)を参照可能です。これによりQは待機せずに値4を得ます。よって選択肢アが正解です。
よくある誤解
単版2PLでもコミット前の値を読めると誤解しがちですが、READ COMMITTEDではコミット済みのデータのみ読み込み可能です。MVCCは古いスナップショットを参照できるため待機不要という点も混同しやすいです。
解法ステップ
- 問題文の隔離レベル「READ COMMITTED」を確認する。
- 単版2相ロッキングの特徴を思い出す:コミット前の更新はロックされているため待機が必要。
- MVCCの特徴を理解する:コミット前の古いバージョンを参照できるため待機不要。
- Qの挙動をそれぞれの制御方式で考える。
- 選択肢の内容と照合し、正しい組み合わせを選ぶ。
選択肢別の誤答解説ステップ
- ア:正解。単版2PLは待機して値5を得る。MVCCは待機せず値4を得る。
- イ:MVCCで待機せず値5を得るのは誤り。コミット前の値は反映されない。
- ウ:単版2PLで待機せず値4を得るのは誤り。ロック待ちが発生する。
- エ:単版2PLで待機せず値5を得るのは誤り。MVCCで待機せず値4を得るのは正しいが、aが誤っているため不正解。
補足コラム
READ COMMITTEDは最も一般的な隔離レベルで、コミット済みのデータのみ読み込み可能です。単版2相ロッキングはロックを用いて整合性を保ちますが、待機が発生しやすいです。MVCCは複数のバージョンを管理し、読み取り処理の待機を減らすために広く使われています。これらの違いを理解することはデータベースの性能と整合性のバランスを考える上で重要です。
FAQ
Q: READ COMMITTEDで単版2PLはなぜ待機が必要ですか?
A: コミット前の更新はロックされているため、他のトランザクションはロック解除まで待機しなければなりません。
A: コミット前の更新はロックされているため、他のトランザクションはロック解除まで待機しなければなりません。
Q: MVCCではなぜ待機せずに古い値を参照できるのですか?
A: MVCCは複数のデータバージョンを保持し、トランザクション開始時点のスナップショットを参照するため、最新のコミットを待つ必要がありません。
A: MVCCは複数のデータバージョンを保持し、トランザクション開始時点のスナップショットを参照するため、最新のコミットを待つ必要がありません。
関連キーワード: 同時実行制御, 2相ロッキング, MVCC, READ COMMITTED, トランザクション, 隔離レベル, データベース整合性