過去問解きまくり研究所 ホーム

令和4年度 秋期 午前Ⅱ 問13

トランザクション処理

デッドロックに関する問題

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

答えと解説を見る

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

解説

ロックを掛ける順番を全処理でそろえると、待ちが輪にならず回避できます。

デッドロックは、二つ以上の処理が互いに相手の持つロックの解放を待ち合い、どちらも先へ進めなくなる状態です。典型的には、処理1がレコード甲、処理2がレコード乙をロックしたあと、処理1が乙を、処理2が甲を求めるときに起こります。ここで、複数のレコードを更新するときのロックの順番を全てのバッチ処理で同じに決めておけば、どの処理も甲の次に乙という同じ順でロックを求めます。すると、乙を持ったまま甲を待つ処理が生まれず、待ちが輪になることがありません。これがデッドロックを避ける設計として適切です。待ちの関係が輪にならない仕組みかどうかを軸にすると、他のガイドラインとの違いが分かります。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:令和4年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問13

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)