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

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

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

問題

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

選択肢

  1. ア
    2相ロック
  2. イ
    時刻印アルゴリズム
  3. ウ
    チェックポイント
  4. エ
    待ちグラフ
解き方のヒントを見る

同時実行の競合を整理する視点

複数の処理が同じデータを扱う場面では、各処理の読み書きの順序と待ち状態に注目し、互いの影響がどこで生じるかを整理して考える。

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

確認する観点を、処理同士が共有データへアクセスする順序に絞る。先に起きた操作、後続操作の待ちや見える結果を問題文と照合し、個別の方式名だけで判断しない。

視点

同時実行の検討では、処理ごとの操作を時系列に並べ、共有対象へのアクセスが重なる箇所と、その間に各処理がどの状態を参照しているかを区別する。

確認ポイント

  • 共有データに対する各処理のアクセス順序を時系列で確認する
  • 一方の処理が他方の進行や参照結果に影響し得る箇所を確認する
  • 待ちや中断を含めた処理の前後関係が一貫しているか確認する
正解と解説を見る

正解

エ

解説

デッドロックは,トランザクションが互いに資源の解放を待ち続ける状態です。待機しているトランザクションを頂点,待機関係を有向辺として表す待ちグラフを作成し,グラフ中の閉路を調べることでデッドロックを検出できる。

理由

待ちグラフは,トランザクションを頂点,あるトランザクションが別のトランザクションの資源解放を待っている関係を有向辺として表現する。グラフに閉路があれば相互待機が成立しているため,デッドロックの発生を検出できる。

比較

2相ロックはロックの取得と解放を管理する同時実行制御方式であり,時刻印アルゴリズムは処理順序を制御する方式です。チェックポイントは障害 recovery のための保存時点であり,いずれも待機関係の閉路を直接検出する仕組みではありません。

選択肢ア

これは不正解だよ。2相ロックは,トランザクションがロックを取得する段階と,ロックを解放する段階を分けて管理する同時実行制御の方式である。デッドロックを発生させる可能性のある待機状態には関係するが,トランザクション間の待機関係を調べて発生を検出する機構そのものではない。

選択肢イ

これは不正解だよ。時刻印アルゴリズムは,各トランザクションに付けた時刻印を基準にして,データ操作の順序や競合時の処理を決める方式である。待ち続けるトランザクション同士の関係を構成し,その循環からデッドロックを検出するためのものではない。

選択肢ウ

これは不正解だよ。チェックポイントは,データベースの状態や更新情報を障害回復に利用できるよう,特定時点で記録しておく仕組みである。システム障害後の復旧処理には役立つが,トランザクション間の相互待機を調べてデッドロックを検出する機能ではない。

選択肢エ(正解)

これは正解だよ。待ちグラフは,トランザクション間の待機関係を有向グラフとして表す。グラフに閉路が存在すると,各トランザクションが別のトランザクションを待ち続ける状態を示すため,その閉路を調べることでデッドロックの発生を検出できる。

学習のポイント

排他制御の方式と,デッドロックを検出するための待機関係の分析方法を区別して学習する。

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

関連する過去問一覧

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