平成26年度 春期 データベーススペシャリスト試験 午前Ⅱ 問15
テクノロジ/データベースDBMSにおいて,デッドロックを検出するために使われるデータ構造はどれか。
出典:平成26年度 春期 データベーススペシャリスト試験 午前Ⅱ 問15
- ア資源割当表
- イ時刻印順管理表
- ウトランザクションの優先順管理表
- エ待ちグラフ
正解:エ
解説
デッドロックは,複数のトランザクションが互いに相手の保持するロックの解放を待ち合う状態である。DBMSは,各トランザクションが「どのトランザクションの解放を待っているか」という待ち関係をノードと有向辺で表す待ちグラフ(wait-for graph)を管理し,このグラフ上に閉路(サイクル)が存在するかどうかを検査することによって,デッドロックの発生を検出する。
選択肢ごとの解説
- ア誤り。資源割当表は,どの資源がどのトランザクションに割り当てられているかを管理する表であり,デッドロックの検出そのものに用いられるデータ構造ではない。
- イ誤り。時刻印順管理表は,タイムスタンプ順に基づく同時実行制御方式で用いられるものであり,デッドロックの検出のためのデータ構造ではない。
- ウ誤り。トランザクションの優先順管理表は,デッドロックが発生した際にどのトランザクションを取り消すかを決定するための優先順位付けに関連し得るが,デッドロックの検出そのものに用いられる標準的なデータ構造ではない。
- エ正しい。トランザクション間の「誰が誰の解放を待っているか」という待ち関係を表す待ちグラフを用い,そこに閉路(サイクル)が生じているかどうかを調べることによってデッドロックを検出する。