データベーススペシャリスト暗記無料で始める

デッドロックとは?デッドロック

デッドロックとは、複数のトランザクションが互いに相手の保持するロックの解放を待ち合い、どれも先に進めなくなる状態。待ちグラフに閉路ができている状態と同義で、放置しても自然には解けないため、DBMSはいずれかを犠牲者として選んで強制的にロールバックする。予防としてはロックの獲得順序を全トランザクションでそろえる方法が有効。

最終更新:2026-10-06

試験情報

データベーススペシャリスト試験の過去問では5回出題され、ほかに1問の解説で触れられています(2016年度〜2025年度)。

データベーススペシャリスト試験の頻出用語/午前II

別名:相互ロック待ち、死の抱擁、デッドロック(OSレベル)、OSレベル

この語が出る過去問を解く →

背景

同時実行の性能を上げようとすると、必要な資源を必要になった時点で1つずつロックする書き方になる。しかし取る順番がトランザクションごとに違うと、互いに相手が持っているものを待つ組み合わせが必ず生じ得る。これは実装の不具合ではなく、ロックによる同時実行制御に構造的に付いてくる副作用であり、防ぐか検出して壊すかのどちらかを選ぶことになる。試験ではこの選択肢の比較が問われる。

具体例

在庫更新のトランザクションT1が商品Aの行をロックしてBを待ち、返品処理のT2がBをロックしてAを待つと動かなくなる。MySQLのInnoDBはこれを自動検出し、更新量の少ないほうをロールバックしてエラーを返す。

試験での引っ掛け

検出は待ちグラフに閉路があるかで判定する。閉路に含まれるトランザクションだけでなく、その閉路へ向かって待っているトランザクションも巻き添えで永久に待たされる点に注意。またSERIALIZABLEにすればデッドロックが消えるわけではなく、むしろ起きやすくなる。

関連用語

出た過去問

問題文で直接問われたものと、解説の中で触れられたものが含まれます。

解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。

この語が出る過去問を解く →

試験での特徴
  • 試験では5回出題(2016年度〜2025年度)
  • 分野:午前II
  • 検出は待ちグラフに閉路があるかで判定する。