令和6年度 秋期 午前Ⅱ 問14
トランザクション処理
多版同時実行制御に関する問題
トランザクションPが資源Xの値を4から5に更新した後にトランザクションQが開始し,Pがコミットする前にQが資源Xを参照しようとした。Qの挙動のa,bに入れる字句の組みはどれか。ただし,隔離性水準はREAD COMMITTEDとする。
〔Qの挙動〕
同時実行制御が単版2相ロッキングプロトコルの場合Qは[ a ],多版同時実行制御(MVCC)の場合Qは[ b ]。
選択肢は原典ではa・bの表。
- ア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を得る
解説
ロック方式では待って5を得て、多版方式では待たずに4を得ます。
単版の2相ロッキングでは、データの版は一つだけです。P は X を更新するために排他ロックを取り、コミットするまで持ち続けます。Q が X を読もうとすると、共有ロックを取れないので待たされ、P がコミットしてロックを解除したあとに、コミット済みの値5を読みます。一方、多版同時実行制御(MVCC)では、更新前の版が残されています。READ COMMITTED では、その時点でコミット済みの最新の版を読むので、Q は P のコミットを待たずに、更新前の値4を得ます。見分ける軸は、版が一つで読む側がロックを待つのか、版が複数あって読む側が古い版を読めるのかです。MVCC は読込みが更新を待たない点が特徴です。
ほかの選択肢はなぜ違うのか
- イa:Pがコミット完了するまで待機した後,…:ロック方式の動きは合っていますが、MVCC で値5を得るとしている点が違います。P はまだコミットしていないので、READ COMMITTED で読めるのはコミット済みの版の4であり、未コミットの5は読みません。
- ウa:Pのコミット完了を待機することなく,…:ロック方式で待たずに4を得るとしている点が違います。版が一つしかないので更新前の値は残っておらず、P が排他ロックを持っている間は Q は待たされます。MVCC で5を得る点も、未コミットの値を読むことになり誤りです。
- エa:Pのコミット完了を待機することなく,…:ロック方式で待たずに5を得るのは、未コミットの値を読むダーティリードであり、READ COMMITTED では起こりません。MVCC で待たずに4を得る点は合っていますが、組合せとしては成り立ちません。
この問題の用語
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
- プロトコル通信するときの、決まりごとや手順のまとまりのことをいいます。送る側と受ける側が同じものに従うことで、やり取りが成り立ちます。
出典:令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問14
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問18:ブロックチェーンに関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問17:デッドロックに関する問題(トランザクション)
- 令和5年度 秋期 午前Ⅱ 問2(プロトコル)
- 平成31年度 春期 午前Ⅱ 問2:チェックポイントに関する問題(プロトコル)
- 平成30年度 春期 午前Ⅱ 問14:隔離性水準に関する問題(プロトコル)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)