令和6年度 秋期 午前Ⅱ 問15
トランザクション処理
トランザクションに関する問題
トランザクションT_1とT_2の並行実行における不整合検索異状(inconsistent retrieval anomaly)の説明はどれか。
- アT_1がxを更新した後コミットする前に,T_2もxを更新すること
- イT_1とT_2が同時にデータxを読み,T_1はxを更新する。T_2は更新前のxの値に基づいてデータyを更新することによって,yの値がxの値に基づかなくなること
- ウ先行するT_1が更新したデータxを,後続のT_2が読んで処理を行うとき,T_1がロールバックすると,T_2もロールバックしなければならなくなること
- エ先行するT_1が更新したデータxを,後続のT_2が読んで処理を行った後に,T_1がロールバックすることによって,T_2は結果的に誤った処理になること
答えと解説を見る
✓ これが正解イT_1とT_2が同時にデータxを読み,T_1はxを更新する。T_2は更新前のxの値に基づいてデータyを更新することによって,yの値がxの値に基づかなくなること
解説
更新前の x を基に T2 が y を更新し、x と合わなくなる異状です。
この問の不整合検索異状は、ある値を読んで、それに基づいて別のデータを更新するときに、読んだ値がすでに古くなっていることで起こります。T1 と T2 が同時に x を読み、T1 は x を更新します。T2 は、T1 が更新する前の x の値をもとに y を計算して書き込みます。すると、最終的なデータベースでは、y は今の x ではなく古い x に基づく値になり、x と y の関係が崩れます。それぞれの更新自体は正しく行われているのに、組み合わせると整合しない状態が残る点が特徴です。見分ける軸は、異状の原因がロールバックなのか、古い値に基づく計算なのかです。ほかの選択肢は、未コミットの更新やロールバックの波及を述べています。
ほかの選択肢はなぜ違うのか
- アT_1がxを更新した後コミットする前に,…:T1 がコミットする前に T2 も同じ x を更新するのは、未コミットのデータに別の更新を重ねてしまう事象です。同じデータへの書込みどうしの衝突であり、古い x に基づいて別のデータ y を更新する話ではありません。
- ウ先行するT_1が更新したデータxを,後続…:T1 がロールバックしたことで、T1 の更新を読んだ T2 も連鎖してロールバックしなければならなくなるのは、ロールバックが波及する事象の説明です。原因が T1 の取消しにある点で違います。
- エ先行するT_1が更新したデータxを,後続…:T1 の未コミットの更新を T2 が読んで処理し、その後 T1 がロールバックして T2 の処理が誤りになるのは、ダーティリードによる事象です。読んだ値そのものが取り消される点で、この問の異状とは違います。
この問題の用語
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
出典:令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問15
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問18:ブロックチェーンに関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問17:デッドロックに関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問16(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問15:隔離性水準に関する問題(トランザクション)
- 令和7年度 秋期 午前Ⅱ 問14:べき等に関する問題(トランザクション)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)