情報処理安全確保支援士試験 情報処理安全確保支援士試験 令和3年度春期 午前Ⅱ21: 複数のバッチ処理を並行して動かすとき,デッドロックの発生をできるだけ回避したい。バッチ処理の設計ガイドラインのうち,適切なものはどれか。

情報処理安全確保支援士試験 令和3年度春期 午前Ⅱ
Q 2121 / 25
複数のバッチ処理を並行して動かすとき,デッドロックの発生をできるだけ回避したい。バッチ処理の設計ガイドラインのうち,適切なものはどれか。

問題本文

複数のバッチ処理を並行して動かすとき,デッドロックの発生をできるだけ回避したい。バッチ処理の設計ガイドラインのうち,適切なものはどれか。

選択肢

  • .参照するレコードにも,専有ロックを掛けるように設計する。
  • .大量データに同じ処理を行うバッチ処理は,まとめて一つのトランザクションとして処理するように設計する。
  • .トランザクション開始直後に,必要なレコード全てに専有ロックを掛ける。ロックに失敗したレコードには,しばらく待って再度ロックを掛けるように設計する。
  • .複数レコードを更新するときにロックを掛ける順番を決めておき,全てのバッチ処理がこれに従って処理するように設計する。

正解

. 複数レコードを更新するときにロックを掛ける順番を決めておき,全てのバッチ処理がこれに従って処理するように設計する。

解説

デッドロックは、複数のトランザクションが互いに相手の保持するロックを待ち合って進めなくなる状態。発生回避の定石は、複数レコードをロックする順序をあらかじめ統一し、全処理が同じ順番でロックを取得すること。これにより循環待ちが起きなくなる。よってエが正解。実務では並行バッチやトランザクション設計で、ロック獲得順序の統一が基本的な予防策となる。

選択肢ごとの解説

  • .参照にも専有ロックを掛けると競合が増えデッドロックを助長しかねず、回避策として不適切で誤り。
  • .大量データを単一の長大トランザクションにするとロック保持が長引き競合が増えるため、回避に逆行し誤り。
  • .再試行でロックを取り直す方式は循環待ちを根本回避できず、デッドロックを十分防げないため不適切。
  • .ロック獲得順序を統一し全処理が従うことで循環待ちを防げる点が回避の定石であり、これが正解。

情報処理安全確保支援士試験 令和3年度春期 午前Ⅱ過去問一覧へ戻る・問21