複数のバッチ処理を並行して動かすとき,デッドロックの発生をできるだけ回避したい。バッチ処理の設計ガイドラインのうち,適切なものはどれか。
ロックの取得順序を統一すればデッドロックを避けられる
選択肢
- ア参照するレコードにも,専有ロックを掛けるように設計する。
- イ大量データに同じ処理を行うバッチ処理は,まとめて一つのトランザクションとして処理するように設計する。
- ウトランザクション開始直後に,必要なレコード全てに専有ロックを掛ける。ロックに失敗したレコードには,しばらく待って再度ロックを掛けるように設計する。
- エ複数レコードを更新するときにロックを掛ける順番を決めておき,全てのバッチ処理がこれに従って処理するように設計する。
正解と解説
正解:エ 複数レコードを更新するときにロックを掛ける順番を決めておき,全てのバッチ処理がこれに従って処理するように設計する。
デッドロックは、複数の処理が資源を互いに異なる順序で確保し、相手が持つ資源を待ち合うことで発生する。したがって、ロックを掛ける順序をあらかじめ決めて全処理でそろえれば、循環した待ち関係が生じなくなり発生を回避できる。
選択肢ごとの解説
- ア参照だけの行にも専有ロックを掛けると競合が増え、かえって発生しやすくなる。
- イ一つの巨大なトランザクションにするとロックの保持時間が延び、競合が増える。
- ウ先にまとめてロックする案だが、失敗時の待ち直しでは順序が揃わず待ち合いが残る。
- エ正しい。ロック順序を統一すれば循環待ちが生じない。
同じ分野の他の問題
- DBMSがトランザクションのコミット処理を完了するタイミングはどれか。2025年度 秋期 午前II 問21
- “従業員”表に対して、SQL文を実行して得られる結果はどれか。ここで、実線の下線は主キーを表し、表中のNULLは値が存在…2025年度 春期 午前II 問21
- 関係モデルにおける外部キーに関する記述のうち,適切なものはどれか。2024年度 秋期 午前II 問21
- “人事”表に対して次のSQL文を実行したとき、結果として得られる社員番号はどれか。 [SQL文] SELECT 社員番号…2024年度 春期 午前II 問21
- DBMSのデータディクショナリはどれか。2023年度 秋期 午前II 問21
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。