データベース用語集一覧に戻る
ホーム > データベーススペシャリスト > 用語集 > デッドロック(Deadlock)の発生機構と回避設計
トランザクション・排他制御・分離レベル 重要度:★★★出題: AM2・PM1・PM2

デッドロック(Deadlock)の発生機構と回避設計

でっどろっくのはっせいきこうとかいひせっけい / Deadlock Prevention and Resolution
複数のトランザクションが互いに相手が保持するロックの解放を待ち続け、どちらも処理を進められなくなる膠着状態。

3行速習ポイント

  • 複数テーブル(A→B と B→A)や同一テーブル内の複数行(主キー昇順と降順)を異なる順序でロック獲得すると発生する
  • また同一行に対して2つのトランザクションが共有ロック取得後に専有ロックへ昇格(ロック変換)しようとした場合にも発生する
  • 回避策は「テーブル・行のロック獲得順序を全トランザクションで統一すること」および「最初からFOR UPDATEで専有ロックを取得すること」

図解

図デッドロック発生メカニズムと回避原則
11. 逆順序ロック・昇格競合
循環待ち発生
Tx1がA→B、Tx2がB→Aの順でロック要求(または共有→専有昇格競合)
22. 対策①:ロック順序の統一
順序統一
全プログラムでテーブル順および主キー昇順(ORDER BY)にロック取得順を統一
33. 対策②:FOR UPDATE事前取得
先行排他
更新予定の行は最初のSELECT時点で専有ロックを獲得し昇格デッドロックを防止

概要と本質

データベースの排他制御において最も重要なトラブルシューティングテーマです。RDBMSは待ちグラフ(Wait-For Graph)の閉路検出などによりデッドロックを自動検知し、一方のトランザクションを強制ロールバック(犠牲者選出)しますが、アプリケーション設計段階でデッドロックが起きないロック順序に統一することが不可欠です。

重要ポイント・コア概念

  • 複数テーブル更新時の原則:すべてのプログラムでテーブルA→テーブルBの同一順序でロックを取得する
  • 同一テーブル複数行更新時の原則:カーソルや更新対象抽出時に主キー(例:契約番号、商品コード)の昇順(ORDER BY)でソートしてから1行ずつロック・更新する
  • 共有ロック→専有ロック昇格によるデッドロック防止:更新予定のSELECT文には最初からFOR UPDATE句を付与して専有ロックを取得する

午後I・午後II記述試験での攻略ポイント

午後I・午後IIでは「時系列に沿ったロック状態表(共有ロック/専有ロック、ロック済み/ロック解放待ち)の穴埋め」と「デッドロックを防ぐための改修方法(処理順序の入替え、ORDER BY句によるソート順統一、FOR UPDATEの付与)」がセットで出題されます。

午後記述で使える加点キーワード(クリックでコピー)

この用語が出題された過去問を解く(1分演習)

即時アウトプットで定着
データベーススペシャリスト 過去問演習で実践力を鍛える

理解を深める推薦副読本

この用語の背景理論・実務動向を深く理解し、午後II小論文の説得力を劇的に高める必読書

PR
ソフトウェアアーキテクチャの基礎 エンジニアリングに基づく体系的アプローチ
戦略・名著セレクションソフトウェアアーキテクチャの基礎 エンジニアリングに基づく体系的アプローチマーク・リチャーズ, ニール・フォード 著 / オライリー・ジャパン
ISBN: 4873119820
🏗️ EA・SoR/SoE・モダナイゼーションの名著

ソフトウェアアーキテクチャの基礎 エンジニアリングに基づく体系的アプローチ

マーク・リチャーズ, ニール・フォード 著 / オライリー・ジャパン

アーキテクチャ特性(非機能要件)の定義と優先度付けモジュラリティ、マイクロサービス、イベント駆動設計のトレードオフレガシーシステムの段階的刷新(モダナイゼーション)設計
なぜこの用語の理解に役立つのか

『デッドロック(Deadlock)の発生機構と回避設計』の背景にある理論と業界動向を体系的に理解し、実務や小論文に直結する戦略的視点を深掘りできます。

午後II小論文(ST論文)への応用・加点ポイント

エンタープライズアーキテクチャ(EA)やSoR/SoE連携、クラウド移行のアーキテクチャ方針を決定した根拠(トレードオフ判断)を論述する際の強力な武器になります。

※価格・在庫状況は各ECモールの最新情報をご確認ください(もしもアフィリエイト経由)