トランザクション処理(全24問中16問目)

ある在庫管理システムは,複数の入力を同時並行して処理し,在庫数を更新しているが,排他制御は行っていない。ある時点での在庫数が100であったとき,入力された二つの入力A,Bに応じて,図に示す処理が①→②→③→④の順序で実行された場合,処理④が終了した時点の在庫数は幾つになるか。
80.gif

出典:平成24年秋期 問80

  • 70
  • 100
  • 120
  • 150
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:トランザクション処理
在庫数(初期値は100)に注目して処理①~④の処理結果を追跡していきます。
  1. "在庫数"100+50=150
  2. "在庫数"100-30=70
  3. ②の結果を"在庫数"に書込む。在庫数=70
  4. ①の結果を"在庫数"に書込む。在庫数=150
このような処理の流れになるので、2つの入力が終了した時点での"在庫数"は150になります。

通常、このような処理を行う場合、在庫数が(100+50-30=)120となることを期待するのですが、同じデータに対して同時更新を行うと、読書きのタイミングによっては更新消失が発生する場合があります。複数のトランザクションがデータを更新する処理を行う場合には、このような更新消失を防ぐために排他制御を行い、データの完全性を確保する必要があります。
排他制御
複数のプロセスが並行処理されるシステムで、一方が処理中の時には他方には処理を待たせ、コンピュータ資源の競合が起こらないように制御すること

Pagetop