用語集
デッドロックでっどろっく
複数トランザクションが互いのロック解放を待ち続け、永遠に進めない状態。
ITパスポート
デッドロック(Deadlock)は、複数のトランザクションが互いに相手の持つロックの解放を待ち続け、どちらも先に進めなくなる状態です。
| 手順 | トランザクション1 | トランザクション2 |
|---|---|---|
| (1) | データ A をロック | データ B をロック |
| (2) | B を要求 → 2 が解放待ち | A を要求 → 1 が解放待ち |
| (3) | 互いに待ち続ける(停止) | 互いに待ち続ける(停止) |
たとえば T1 が A をロックして B を欲しがり、同時に T2 が B をロックして A を欲しがると、両者が永久に待ち合います。データベースはこれを検知し、片方を強制的にロールバックして解消します。対策はロックを取る順番をそろえる、トランザクションを短くする、などです。
試験では 「互いのロック解放を待ち合って進めなくなる状態」という定義が問われます。発生条件(複数のロックを別順序で取得)と、片方を取り消して解消する点を押さえましょう。