2019年度 午後Ⅱ

問21トランザクションT1,T2の同時実行制御が適切に行われない場合に起こりえる,レコードX,Yの変更消失問題(lost update anomaly)に該当する処理はどれか。
  1. T1がXとYを参照しながら値の集計を行っている最中に,T2がXを更新した。
  2. T1がXを更新した後,コミットする前に,T2がXを参照したが,T1がロールバックした。
  3. T1がXを追加した後,コミットする前に,T2がXを参照し,その値を使ってYを更新した。
  4. T1とT2がほぼ同時に参照し,その値に基づいてXをT1,T2の順番に更新した。
解答欄
問21

答え. エ

変更消失問題(lost update anomaly)とは、あるトランザクションが変更した内容が他のトランザクションによって上書きされ、無かったことになる現象のこと。これを防ぐためには、データへアクセスする際に排他制御を行う必要がある。
T1とT2がほぼ同時に参照し,その値に基づいてXをT1,T2の順番に更新した。」場合、T1の変更はT2の変更で上書きされる。これが変更消失問題である。

なお、
「T1がXとYを参照しながら値の集計を行っている最中に,T2がXを更新した。」は同じデータを複数回読み込む際に途中でデータが変わる ファジーリード(Fuzzy Read)に、
「T1がXを更新した後,コミットする前に,T2がXを参照したが,T1がロールバックした。」と「T1がXを追加した後,コミットする前に,T2がXを参照し,その値を使ってYを更新した。」はコミットしていない変更後のデータを他のトランザクションから読み込めてしまう ダーティリード/ノンリピータブルリード (Dirty Read / Non-repeatable Read) にに該当する。