トランザクション処理 (全26問中24問目)
No.24
データDを更新する二つの処理A,Bが,①→③→②→④のタイミングで実行された場合,Dの値は幾らになるか。ここで,Dの初期値は2とする。
出典:平成21年春期 問82
- 6
- 7
- 11
- 21
分類
テクノロジ系 » データベース » トランザクション処理
正解
イ
解説
排他制御をしていないとき、同一データに対して同時に更新処理が行われると期待した計算結果にならないことを示す例です。
※"3倍する処理"と"5を加える処理"が順次実行されれば、Dの値は「2×3=6」→「6+5=11」になることを期待しますが、無造作に並列処理を行うと、この例のように別の処理の更新結果を上書きしてしまう更新消失が起こる可能性があります。排他制御はこれを防止するための機構です。
- ① 処理AがD(=2)を読み込み、3倍する
- 処理Aは「2×3=6」を保持する(注:Dが更新されるわけではありません)
- ③ 処理BがD(=2)を読み込み、5を加算する
- 処理Bは「2+5=7」を保持する(注:Dが更新されるわけではありません)
- ② 処理Aが①の演算結果をDに書き込む
- Dの値は6になる
- ④ 処理Bが②の演算結果をDに書き込む
- Dの値は7になる
※"3倍する処理"と"5を加える処理"が順次実行されれば、Dの値は「2×3=6」→「6+5=11」になることを期待しますが、無造作に並列処理を行うと、この例のように別の処理の更新結果を上書きしてしまう更新消失が起こる可能性があります。排他制御はこれを防止するための機構です。