応用情報技術者データベース応用オリジナル・公式資料照合難易度★★★☆☆
トランザクションT1は行Aをロック後にBを、T2はBをロック後にAを更新しようとして相互待ちになる。同じ2行を更新する処理で、この種類のデッドロックを避ける設計はどれか。
A
T1だけでロックの待ち時間を無限にする
待ち時間を無限にしても循環待ちは解消しません。長時間停止するおそれがあります。
B
全処理でA→Bなど同じ順にロックを取得する★ 正解
対象資源の取得順を統一すると、Aを待ちながらBを保持する逆順の循環を作らずに済みます。
C
二つのトランザクションをさらに長くする
ロック保持時間が長くなると競合が増えやすく、循環待ちの根本対策になりません。
D
更新前に両方のロックを必ず無視する
必要な排他制御を無視すると更新消失など別の不整合を起こします。
解説
複数の資源は全コード経路で同じ順序で取得します。一般には短いトランザクション、検出時の再試行設計なども組み合わせます。
根拠資料・確認情報
対応範囲:2026年度 応用情報技術者試験
資料確認日:2026-10-28