応用情報技術者
データベース
複数のトランザクションが互いに相手のロック解除を待ってしまい、処理が進まなくなる状態を何と呼ぶか。
1.
デッドロック
✓ 正解
2.
ライブロック
3.
ダーティリード
4.
ロールバック
📝 解説
デッドロックは「2つ以上のトランザクションが互いの持つロックを待ち合って永久に進めなくなる」状態です。交差点で4方向から来た車が互いに道を譲らず動けなくなる渋滞に似ています。例えばトランザクションAがリソースXをロックしてYを待ち、BがYをロックしてXを待つと互いに相手を待ち続けます。解消策は「タイムアウト後に一方を強制ロールバックする」か「待ちグラフで循環を検出して中断する」方法があります。予防策は「全トランザクションでリソースの取得順序を統一する」ことです。誤答の「ライブロック」は互いに避けようとして永久に状態が変わらないケース、「ダーティリード」は未コミットデータを読んでしまう問題です!