
応用情報技術者試験基礎・応用
条件を読む・根拠を説明する
DBロック中の外部呼出し
条件を整理し、答えを選んでから解き方を確認しましょう。
在庫行をFOR UPDATEでロックし、数十秒かかる外部APIを呼び、最後にCOMMITする実装。別注文の同じ在庫更新が待たされる。主な検討はどれか。
答え・解き方を読む
整合要件を保ちつつ外部待ちを含むロック保持時間を短くする
考える順序
- 1行ロックは取引終了まで競合更新を待たせる
- 2外部待ちが保持期間を延ばす
- 3業務状態と再処理を設計して不要な保持を減らす
選択肢ごとの理由
- 正解 · 整合要件を保ちつつ外部待ちを含むロック保持時間を短くする
行ロックは取引終了まで競合更新を待たせる。外部待ちが保持期間を延ばす。業務状態と再処理を設計して不要な保持を減らす。
- 比較 · ロック取得を増やせば同じ行への待ちは必ず短くなる
競合するロックを増やすだけでは待ちは解消しません。
- 比較 · COMMITしなければ他取引は直ちに同じ行を更新できる
取引がロックを保持したままなら競合更新は待ちます。
- 比較 · 外部APIが遅いのでDBのロックとは無関係
外部待ちが同じ取引内ならロック期間に影響します。