ホーム > データベーススペシャリスト試験 > 2018年
データベーススペシャリスト試験 2018年 午前2 問16
DBMSにおいて、デッドロックを検出するために使われるデータ構造はどれか。
ア:資源割当表
イ:時刻印順管理表
ウ:トランザクションの優先順管理表
エ:待ちグラフ(正解)
解説
DBMSにおけるデッドロック検出のためのデータ構造【午前2 解説】
要点まとめ
- 結論:デッドロック検出には「待ちグラフ」が用いられます。
- 根拠:待ちグラフはトランザクション間の資源の待ち関係を有向グラフで表現し、循環(サイクル)を検出することでデッドロックを判定します。
- 差がつくポイント:資源割当表や時刻印順管理表は管理目的が異なり、デッドロック検出には直接使われません。待ちグラフの理解が合否を分けます。
正解の理由
デッドロックとは複数のトランザクションが互いに相手の資源解放を待っている状態で、処理が永久に停止します。待ちグラフはノードにトランザクションを、エッジに「トランザクションAがトランザクションBの資源を待っている」関係を表し、グラフ内にサイクルがあればデッドロックが発生していると判断できます。したがって、デッドロック検出に最適なデータ構造は待ちグラフです。
よくある誤解
資源割当表は資源の割当状況を示すだけで、デッドロックの検出には不十分です。時刻印順管理表はトランザクションの順序管理に使われ、デッドロック検出とは直接関係ありません。
解法ステップ
- 問題文のキーワード「デッドロック検出」に注目する。
- 各選択肢の役割を整理する。
- 「待ちグラフ」がトランザクション間の待ち関係をグラフで表現し、サイクル検出に用いられることを思い出す。
- 他の選択肢はデッドロック検出に直接使われないことを確認する。
- 正解は「待ちグラフ」と判断する。
選択肢別の誤答解説
- ア: 資源割当表
資源の割当状況を管理するが、トランザクション間の待ち関係を示さずデッドロック検出には不向き。 - イ: 時刻印順管理表
トランザクションの実行順序を管理し、整合性維持に使うがデッドロック検出には関係しない。 - ウ: トランザクションの優先順管理表
優先順位管理はスケジューリングに関係するが、デッドロックの検出には用いられない。 - エ: 待ちグラフ
トランザクション間の待ち関係をグラフで表し、サイクル検出によりデッドロックを判定できる正解。
補足コラム
デッドロックの検出方法には「待ちグラフによるサイクル検出」のほか、「タイムアウト方式」や「資源割当表の解析」などもありますが、最も基本的かつ理論的に正確なのが待ちグラフです。DBMSのトランザクション管理では、待ちグラフを用いてデッドロックを検出し、解消のためにトランザクションの中断やロールバックを行います。
FAQ
Q: 待ちグラフでサイクルが見つかったらどうなる?
A: デッドロックが発生しているため、DBMSは一部のトランザクションを中断して解消します。
A: デッドロックが発生しているため、DBMSは一部のトランザクションを中断して解消します。
Q: 資源割当表は何のために使う?
A: 資源の割当状況を管理し、どのトランザクションがどの資源を保持しているかを把握するために使います。
A: 資源の割当状況を管理し、どのトランザクションがどの資源を保持しているかを把握するために使います。
関連キーワード: デッドロック, 待ちグラフ, トランザクション管理, DBMS, サイクル検出, 資源割当表