デッドロック検出 | 応用情報技術者試験
デッドロック検出とは
デッドロック検出とは、データベースなどで複数の処理がお互いに相手が使っているデータの解放を待ち合ってしまい、処理が完全に停止(フリーズ)してしまう「デッドロック」という状態を、システムが自動的に見つけ出す仕組みのことです。
データを書き換える際、他の処理に邪魔されないようにデータに鍵をかける「ロック」を行います。2つの処理がそれぞれ異なるデータにロックをかけた後、お互いにもう一方のデータを使おうとすると、永久に終わらない「待ち合い状態」が発生します。デッドロック検出機能は、システム内部の待ち関係を監視(待ちグラフの作成など)し、ループ状態になっているのを検知すると、一方の処理を強制的にエラー(ロールバック)にして終了させることで、システム全体のフリーズを回避します。
具体例
処理Aが「テーブル1」に鍵をかけ、次に「テーブル2」を使おうとして待っています。同時に、処理Bが「テーブル2」に鍵をかけ、次に「テーブル1」を使おうとして待っています。この状態になると、お互いに鍵を開けるのを待ち続けるため、外から止めない限り永久に動きません。デッドロック検出システムは、この硬直を検知し、処理Bを強制終了させて処理Aを先に進めさせます。
もう少し詳しく