IPA過去問ドリル

平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13

テクノロジ/データベース

DBMSにおいて,トランザクション間でデッドロックが発生していることを検出するために使用するものはどれか。

出典:平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13

正解:エ

解説

デッドロックは,複数のトランザクションが互いに相手の保持するロックの解放を待ち合っている状態です。この状態を検出するには,どのトランザクションがどのトランザクションのロック解放を待っているかを表す待ちグラフ(wait-for graph)を作成し,グラフ中に循環(サイクル)が存在するかどうかを調べる方法が使われます。

選択肢ごとの解説

  • 誤り。2相ロックは,ロック獲得だけを行う拡張フェーズとロック解放だけを行う縮退フェーズに分けて実行を制御する同時実行制御方式であり,直列可能性を保証するものであってデッドロックの検出手段ではありません。
  • 誤り。時刻印アルゴリズムは,各トランザクションに割り当てた時刻印の順序に基づいて処理順序を制御することでデッドロックの発生自体を回避する方式であり,発生したデッドロックを検出するための手段ではありません。
  • 誤り。チェックポイントは,ある時点のデータベースやログの状態を記録し,障害回復時の処理を効率化するための仕組みであり,デッドロックの検出とは関係がありません。
  • 正しい。トランザクション同士のロック待ち関係を表す待ちグラフを作成し,その中に循環が存在するかどうかを調べることで,デッドロックの発生を検出できます。
データベーススペシャリストの過去問を演習モードで解く