令和元年度 秋期 午前Ⅱ 問21
データベース
変更消失に関する問題
トランザクション T₁,T₂ の同時実行制御が適切に行われない場合に起こり得る,レコード X,Y の変更消失問題(lost update anomaly)に該当する処理はどれか。
- アT₁ が X と Y を参照しながら値の集計を行っている最中に,T₂ が X を更新した。
- イT₁ が X を更新した後,コミットする前に,T₂ が X を参照したが,T₁ がロールバックした。
- ウT₁ が X を追加した後,コミットする前に,T₂ が X を参照し,その値を使って Y を更新した。
- エT₁ と T₂ が X をほぼ同時に参照し,その値に基づいて X を T₁,T₂ の順番に更新した。
答えと解説を見る
✓ これが正解エT₁ と T₂ が X をほぼ同時に参照し,その値に基づいて X を T₁,T₂ の順番に更新した。
解説
同じ値を読んだ二つの更新で、先の更新が後の更新に上書きされて消えます。
変更消失は、二つのトランザクションが同じデータを読み、それぞれ読んだ値をもとに更新したとき、後から書いた更新が先の更新を上書きしてしまう現象です。見分ける軸は、両方のトランザクションが同じレコードを更新しているかどうかです。T₁ と T₂ が X をほぼ同時に参照し、その値に基づいて T₁、T₂ の順に X を更新すると、T₂ は T₁ の更新を知らないまま古い値から計算した結果を書くので、T₁ の更新が失われます。二つとも書き込んだのに一つ分しか残らない、と結果で覚えると、読む側の異常と区別できます。同時実行制御ではロックなどでこれを防ぎます。
ほかの選択肢はなぜ違うのか
- アT₁ が X と Y を参照しながら値の…:T₁ が集計で X と Y を読んでいる途中に T₂ が X を書き換えると、集計の結果が食い違うおそれがあります。ただし更新したのは T₂ だけなので、誰かの更新が消える現象ではありません。
- イT₁ が X を更新した後,コミットする…:コミット前の X を T₂ が読み、その後 T₁ がロールバックすると、T₂ は確定しなかった値を読んだことになります。読んだ側の誤りであって、更新が上書きされて消える問題とは別物です。
- ウT₁ が X を追加した後,コミットする…:T₁ が追加した未コミットの X を T₂ が読み、その値で Y を更新すると、T₁ が取り消されたときに Y が根拠のない値のまま残ります。更新が失われるのではなく、確定前の値に依存する問題です。
この問題の用語
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
出典:令和元年度 秋期 ITサービスマネージャ試験 午前Ⅱ 問21
同じ用語が出る問題
- 令和7年度 春期 午前Ⅱ 問23(トランザクション)
- 令和5年度 春期 午前Ⅱ 問23:トランザクションに関する問題(トランザクション)
- 令和4年度 春期 午前Ⅱ 問23:2相コミットプロトコルの問題(トランザクション)
- 令和3年度 春期 午前Ⅱ 問23:ロールフォワードに関する問題(トランザクション)
- 平成29年度 秋期 午前Ⅱ 問21:WALに関する問題(トランザクション)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)