デッドロックとは?でっどろっく
デッドロックとは、複数のトランザクションが互いに相手のロックの解放を待ち合い、どれも完了できなくなる状態。DBMSが待ちの循環を検出し、いずれか一方を自動的にロールバックすることで解消するため、利用者の側には「処理が取り消されたのでやり直してください」という形で現れる。情報セキュリティマネジメント試験では、この解消を誰が行うのかと、コミット・ロールバック・ロールフォワードという用語を正しく使い分けられるかが問われる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
同時更新によるデータの取り違えを防ぐため、DBMSは更新中のデータを他の処理から触らせない。完全性を守るためのこの待ちが両側で成立すると、誰も進めなくなる。ここで押さえるべきは、検出も、犠牲にするトランザクションの選択も、ロックの獲得・解放も、すべてDBMSの責務として設計されている点である。利用部門や運用担当者が手作業で解くものではないため、管理側に求められるのは、起きたときの利用者の行動をあらかじめ手順として決めておくことになる。
具体例
Oracle Databaseはデッドロックを検出すると ORA-00060(deadlock detected while waiting for resource)を返し、片方のトランザクションを取り消す。取り消された側の入力内容は保存されていないので、業務手順書には、このエラーが表示されたら入力をやり直すことと、繰り返し発生する場合は情報システム部門へ連絡することを書いておく。
試験での引っ掛け
「デッドロックが発生したのでアプリケーションプログラムがロックを解放した」とする選択肢は誤りで、ロックの獲得も解放もDBMSが管理する。「異常終了したトランザクションをDBMSがロールフォワードした」も誤りで、異常終了した処理は取り消す側(ロールバック)であり、ロールフォワードはコミット済みの更新をログから再現して復旧する操作である。更新結果を確定するのはコミットで、ロールバックは確定ではなく取消しであるという向きも取り違えやすい。
関連用語
出た過去問
出典:令和元年度 秋期 情報セキュリティマネジメント試験 午前 問46(IPA)
データベースのトランザクションに関する記述のうち、適切なものはどれか。
正解:複数のトランザクション間でデッドロックが発生したので、トランザクションをDBMSがロールバックした。
要点:デッドロックはDBMSがロールバックで解消する
デッドロックは複数のトランザクションが互いに相手の保持するロックを待ち続けて処理が進まなくなる状態で、DBMSがこれを検出し、いずれかのトランザクションをロールバックして解消する。ロックの獲得・解放はDBMSが管理し、更新の確定はコミット、障害からの復旧はロールバックやロールフォワードが使い分けられる。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。