IPA公式正解:エ 複数レコードを更新するときにロックを掛ける順番を決めておき,全てのパッチ処理がこれに従って処理するように設計する。
※ 正解はIPA公表の解答です。解説は当サイトが生成AIを用いて作成しています。誤りにお気づきの場合はお問い合わせください。
【解説】正解は選択肢【エ】です。複数レコードの更新時におけるデッドロックを回避するためには、ロックを掛ける順番をあらかじめ決めておき、すべての処理がその順序に従って処理するよう設計します。
【詳細解説】■ 本問の核心・解法のポイント
データベースのバッチ処理やトランザクション処理において、デッドロック(排他制御による膠着状態)を回避するための設計原則(Coffman条件の崩し方、特に循環待ちの防止)に関する問題です。
・各選択肢の徹底解説:
・ア:参照するレコードにまで不要な専有ロック(Xロック)を掛けると、並行性が著しく低下し、むしろデッドロックや性能劣化の原因となります。
・イ:大量データを一つのトランザクションにまとめると、ロックされるリソースの範囲と時間が膨大になり、デッドロックの発生確率やシステムへの負荷が非常に高くなります。
・ウ:必要なレコード全てに一度にロックを掛けるアプローチは有効な場合もありますが、「失敗したら再度ロックを掛ける」というリトライ処理だけでは、ライブロックや競合の多発を招き、根本的なデッドロック回避策としては不十分です。
・エ【選択肢エ★】 :複数のリソースを更新する際、すべてのトランザクションが「常に同じ順序(例:IDの昇順など)」でロックを取得するルールを徹底することで、デッドロックの必要条件の一つである「循環待ち(Circular Wait)」を防止し、デッドロックの発生を回避できます。
よって正解はエです。