ITパスポート平成21年春期 問82

問82

データDを更新する二つの処理A,Bが,①→③→②→④のタイミングで実行された場合,Dの値は幾らになるか。ここで,Dの初期値は2とする。
82.png/image-size:282×167
  • 6
  • 7
  • 11
  • 21

分類

テクノロジ系 » データベース » トランザクション処理

正解

解説

排他制御をしていないとき、同一データに対して同時に更新処理が行われると期待した計算結果にならないことを示す例です。
① 処理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になる
したがって、最終的にDの値は7となります。

※"3倍する処理"と"5を加える処理"が順次実行されれば、Dの値は「2×3=6」→「6+5=11」になることを期待しますが、無造作に並列処理を行うと、この例のように別の処理の更新結果を上書きしてしまう更新消失が起こる可能性があります。排他制御はこれを防止するための機構です。
© 2009-2024 ITパスポート試験ドットコム All Rights Reserved.

Pagetop