DBデータベーススペシャリスト試験 午前Ⅱ

平成22年度春期 データベーススペシャリスト 午前Ⅱ 問17

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

DBMSにおいて,デッドロックを検出するために使われるデータ構造はどれか。

選択肢

  1. ア
    資源割当表
  2. イ
    時刻印順管理表
  3. ウ
    トランザクションの優先順管理表
  4. エ
    待ちグラフ
解き方のヒントを見る

ロック競合を時系列で見る視点

同時実行の設問では、各トランザクションの処理順序と共有資源への関わりを時系列で整理し、どの時点で待ちや干渉が生じ得るかという観点だけに注目して読み進めます。用語の定義や前提条件も、最初に揃えておくと比較しやすくなります。

この問題で問われていること

確認する視点は、複数の処理が同じデータに関わる場面で、取得・保持・解放などの出来事がどの順番に並ぶかです。まず時系列を書き出し、競合しそうな資源と処理の境界を対応づけてください。

視点

ロック競合を考えるときは、個々の操作を単独で判断せず、処理同士の時間的な重なりと共有資源との関係を整理します。順序を図や表にすると、確認すべき箇所を切り分けやすくなります。

確認ポイント

  • 各処理が参照・更新する対象を、トランザクションごとに分けて書き出す
  • 操作の開始・継続・終了の順序と、資源に関わる区切りを対応づける
  • 待機や干渉の可能性を考える際、示された前提と用語の意味を再確認する
正解と解説を見る

正解

エ

解説

正答はエの待ちグラフです。トランザクションを頂点、あるトランザクションが必要とする資源を別のトランザクションが保持しているために待っている関係を有向辺で表し、循環の有無からデッドロックを検出する。

理由

待ちグラフは、トランザクション間の待ち関係を有向グラフで表すデータ構造です。グラフ上に循環が存在すると、各トランザクションが別のトランザクションの処理完了を待ち続けるため、デッドロックと判断できる。

比較

他の選択肢は、資源の割当てや時刻印、優先順位を管理する表であり、デッドロックの検出に必要なトランザクション間の循環した待ち関係を直接表すデータ構造ではありません。

選択肢ア

これは不正解だよ。資源割当表は、どの資源がどのトランザクションに割り当てられているかを管理する表である。資源の保有状況を把握する材料にはなるが、トランザクション同士の待ち関係が循環しているかを直接表すデータ構造ではないため、デッドロック検出用の答えとしては不適切である。

選択肢イ

これは不正解だよ。時刻印順管理表は、トランザクションに付けた時刻印などを基準に処理順序や競合時の扱いを管理するためのものである。処理の順序を決める情報であって、複数のトランザクション間にある待ち関係の循環を表現し、デッドロックを検出する構造ではない。

選択肢ウ

これは不正解だよ。トランザクションの優先順管理表は、トランザクション間の優先順位を管理するための表である。優先順位は競合時の処理方針に関係するが、あるトランザクションが別のトランザクションを待つ関係や、その循環を直接表すものではない。

選択肢エ(正解)

これは正解だよ。待ちグラフは、トランザクションを頂点として、あるトランザクションが別のトランザクションの処理完了を待っている関係を有向辺で表す。グラフに循環があると相互に待ち続ける状態を示すため、デッドロックの検出に使われる。

学習のポイント

待ちグラフの構成要素と、循環がデッドロックを示す理由を理解する。

出典:独立行政法人 情報処理推進機構(IPA)平成22年度春期 データベーススペシャリスト試験 午前Ⅱ 問17(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針