ある在庫管理システムは、複数の入力を同時並行して処理し、在庫数を更新しているが、排他制御は行っていない。ある時点での在庫数が100であったとき、入力された二つの入力A、Bに応じて、図に示す処理が①→②→③→④の順序で実行された場合、処理④が終了した時点の在庫数は幾つになるか。
排他制御なしの同時更新は後の書込みが先の更新を消す(ロストアップデート)
![在庫管理システムの処理フロー図。入力Aは処理[①“在庫数”を読み込み、入庫数の50を加える。④結果を“在庫数”に書き込む。]へ。入力Bは処理[②“在庫数”を読み込み、出庫数の30を引く。③結果を“在庫数”に書き込む。]へ。両方とも「在庫数」という共通のデータストアを読み書きする。実行順序は①→②→③→④:①でAが在庫数100を読み込み+50=150を計算(まだ書き込まず)。②でBが在庫数100を読み込み-30=70を計算。③でBが結果70を在庫数に書き込む(在庫数は70になる)。④でAが①で計算した150を書き込む(Bの更新を上書き)。よって最終的な在庫数は150。](/data/ip/figures/ip-2012a-main-80.jpg)
選択肢
- ア70
- イ100
- ウ120
- エ150
正解と解説
正解:エ 150
排他制御がないため、両方の処理が更新前の在庫数100を読み込んでしまう。入庫側は100+50=150、出庫側は100-30=70をそれぞれ計算し、先に出庫側が70を書き込んだ後、入庫側が150で上書きする。結果として出庫の更新が失われ、在庫数は150になる。これが更新結果の消失(ロストアップデート)である。
選択肢ごとの解説
- ア出庫側の計算結果だが、その後に上書きされるため最終値ではない。
- イ更新が一切反映されなかった場合の値。
- ウ入庫と出庫の両方が正しく反映された場合の値で、排他制御があればこうなる。
- エ最後に書き込まれた入庫側の計算結果で、これが正解。
同じ分野の他の問題
- DBMSのトランザクションに関する記述として、適切なものはどれか。2025年度 秋期 問61
- トランザクション処理に関する記述のうち、適切なものはどれか。2024年度 秋期 問74
- トランザクション処理におけるコミットの説明として、適切なものはどれか。2023年度 秋期 問66
- トランザクション処理のACID特性に関する記述として,適切なものはどれか。2022年度 秋期 問77
- 金融システムの口座振替では、振替元の口座からの出金処理と振替先の口座への入金処理について、両方の処理が実行されるか、両方…2021年度 秋期 問62
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。