平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13
テクノロジ/データベースDBMSにおいて,トランザクション間でデッドロックが発生していることを検出するために使用するものはどれか。
出典:平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13
- ア2相ロック
- イ時刻印アルゴリズム
- ウチェックポイント
- エ待ちグラフ
正解:エ
解説
デッドロックは,複数のトランザクションが互いに相手の保持するロックの解放を待ち合っている状態です。この状態を検出するには,どのトランザクションがどのトランザクションのロック解放を待っているかを表す待ちグラフ(wait-for graph)を作成し,グラフ中に循環(サイクル)が存在するかどうかを調べる方法が使われます。
選択肢ごとの解説
- ア誤り。2相ロックは,ロック獲得だけを行う拡張フェーズとロック解放だけを行う縮退フェーズに分けて実行を制御する同時実行制御方式であり,直列可能性を保証するものであってデッドロックの検出手段ではありません。
- イ誤り。時刻印アルゴリズムは,各トランザクションに割り当てた時刻印の順序に基づいて処理順序を制御することでデッドロックの発生自体を回避する方式であり,発生したデッドロックを検出するための手段ではありません。
- ウ誤り。チェックポイントは,ある時点のデータベースやログの状態を記録し,障害回復時の処理を効率化するための仕組みであり,デッドロックの検出とは関係がありません。
- エ正しい。トランザクション同士のロック待ち関係を表す待ちグラフを作成し,その中に循環が存在するかどうかを調べることで,デッドロックの発生を検出できます。