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

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

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

問題

デッドロックが発生する可能性のある排他制御の方式はどれか。

選択肢

  1. ア
    2相ロックプロトコルに従ってロックする方式
  2. イ
    時刻印を用いて,トランザクションの優先順位を決める方式
  3. ウ
    全てのトランザクションにおいて,ロック対象のデータは一定の順序でロックを行い,全てのロックが完了するまで,アンロックを行わない方式
  4. エ
    トランザクション開始時に一括してロックする方式
解き方のヒントを見る

同時実行制御を整理する着眼点

複数の処理が同じデータを扱う場面では、各処理の読み書きの順序と、資源を確保する期間に注目し、処理間の待ちや干渉がどのように生じるかを整理します。まず個々の処理を別々に追い、共有部分だけを比較すると、条件の読み落としを減らせます。

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

一つの取引の各操作を時系列に並べ、どの共有資源へいつ関与しているかを確認します。処理の順序、保持の長さ、待機関係を区別して考え、同じ資源に関する関係だけを丁寧に追うことが重要です。

視点

同時実行の検討では、処理ごとの操作列と共有資源との関係を分けて整理します。各操作の開始時点、継続期間、他の処理との接点を時系列で書き出すと、競合や待機の関係を把握しやすくなります。

確認ポイント

  • 各処理の操作順序を時系列で確認する
  • 共有資源と関与する期間を整理する
  • 処理間の待機や干渉の関係を図にする
正解と解説を見る

正解

ア

解説

デッドロックは、複数のトランザクションが互いに相手のロック解放を待ち続ける状態です。2相ロックではこの待機関係が循環する可能性があります。

理由

2相ロックプロトコルでは、ロックを取得する段階と、ロックを解放する段階を分けます。複数のトランザクションが異なるデータをロックした後、互いに相手が保持するデータのロックを待つと、待機関係が循環し、デッドロックが発生する可能性があります。

比較

時刻印方式は時刻印に基づいて処理の優先順位を決める方式です。ロック対象を全トランザクションで一定順序にする方式や、開始時に必要なロックを一括取得する方式は、待機関係の循環を防ぐ考え方に基づきます。

選択肢ア(正解)

これは正解だよ。2相ロックプロトコルでは、トランザクションが複数のデータを順にロックすることがあります。その際、一方が保持するロックを他方が待ち、他方が保持するロックを一方が待つ状態になると、待機関係が循環してデッドロックが発生する可能性があります。

選択肢イ

これは不正解だよ。時刻印を用いてトランザクションの優先順位を決める方式は、時刻印に基づいて処理の可否や順序を判断する方式です。設問のようにロックを保持したまま相手のロック解放を待つ循環が、この方式の特徴として生じるとはいえません。

選択肢ウ

これは不正解だよ。すべてのトランザクションでロック対象データを一定の順序でロックすれば、互いに異なる順序でロックして待機関係が循環することを防げます。全ロック完了までアンロックしない点だけでなく、一定順序で取得する点が重要です。

選択肢エ

これは不正解だよ。トランザクション開始時に必要なロックを一括して取得する方式では、処理途中で別のロックを追加取得しながら相手を待つ状況を避けられます。そのため、ロック取得の途中で待機関係が循環する可能性を抑えられます。

学習のポイント

2相ロックとデッドロックの関係、および待機関係が循環する条件を理解する。

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

関連する過去問一覧

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