用語集に戻る
データベース初級

デッドロック

デッドロック

一言で言うと

複数トランザクションが互いの解放を待ち、永遠に止まる状態。

もう少し詳しく

一言で言うと

複数トランザクションが互いの解放を待ち、永遠に止まる状態。

もう少し詳しく

デッドロックは複数のトランザクションが互いのロック解放を循環的に待ち合う状態です。たとえばトランザクションAがテーブルXをロックしてテーブルYを待ち、トランザクションBがテーブルYをロックしてテーブルXを待つと、どちらも前に進めなくなります。RDBMSはデッドロック検出機構を持ち、循環待機を発見すると一方を犠牲者として自動ロールバックし、もう一方を続行させます。この検出と自動解消の仕組みを理解した上で、ロック取得順序の統一やトランザクションの短時間化といった予防策を設計に織り込むことが重要です。

RDB の世界では設計と性能の両面で意識する用語です。SQL を書くだけでなく、正規化やインデックスといった設計思想にも関わってきます。大規模なデータを扱うアプリでは特に重要です。

実務でどう使うか

  • データ設計: テーブル設計や ER 図を描くときに前提知識として使います

  • クエリチューニング: 遅い SQL を改善する際、この概念を理解していないと原因特定が難しくなります

  • データ分析: 分析用のクエリを書くマーケ・PM もこの概念を知っておくと、エンジニアとの会話がスムーズです
  • 関連する章

    EC Ch13 で詳しく学べます。

    関連する用語

    この用語を学べるコース

    この用語を実際に使ってみよう

    チョットデキルなら、5分のレッスンで実際にコードを書いて学べます。

    コース一覧を見る