DBデータベーススペシャリスト試験 午前Ⅰ
平成29年度春期 データベーススペシャリスト 午前Ⅰ 問8
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題

選択肢
- ア③
- イ④
- ウ⑤
- エ⑥
解き方のヒントを見る
競合と停滞を見分ける視点
処理同士の関係を、どの資源を待ち、どの時点で進行が止まっているかという観点から整理します。個別の選択肢ではなく、まず依存関係の読み取りを優先して考えてください。
この問題で問われていること
図や記述を読むときは、各処理が保持しているものと待っているものの対応だけに注目し、時間の流れや関係の循環が示されているかを順に確認してください。必要なら関係を簡単に書き出します。
視点
複数の処理が同じ対象に関わる場合は、処理ごとの状態を分けて書き出し、保持と待機の関係を線や表で整理すると比較しやすくなります。判断は、個々の用語の印象ではなく、関係がどうつながっているかを根拠に行います。
確認ポイント
- 各処理が現在保持している対象と、次に必要としている対象を分けて読めているか確認する。
- 待機している処理と、それを妨げている処理の対応関係を同じ基準で並べているか確認する。
- 一時的な競合と、処理の進行を長く妨げる関係を区別するため、状態のつながりを見直す。
正解と解説を見る
正解
エ
解説
トランザクションAは先にテーブルaをロックし、トランザクションBはテーブルbをロックします。その後、AはBが保持するbを待ち、BはAが保持するaを待つため、⑥の時点で相互待ちが成立し、デッドロックになります。
理由
③でAがテーブルaを更新する直前にaをロックし、④でBがテーブルbを更新する直前にbをロックします。⑤ではAがbを取得できず、Bのロック解放を待つ状態になります。⑥でBもaを取得できず、Aのロック解放を待つため、互いに相手を待つ循環が成立します。
比較
③と④では、まだ相手のロックを待つ関係が成立していません。⑤ではAからBへの一方向の待機だけであり、Bは処理を進められます。⑥になるとBからAへの待機も加わるため、処理が相互に進められないデッドロックとなります。
選択肢ア
これは不正解だよ。③では、トランザクションAがテーブルaを更新する直前にaのロックを取得します。この時点ではトランザクションBはまだテーブルbを更新しておらず、AとBが互いに相手のロックを待つ循環関係は成立していません。
選択肢イ
これは不正解だよ。④では、トランザクションBがテーブルbを更新する直前にbのロックを取得します。ただし、この時点ではAはまだbの取得を待っておらず、Bもaの取得を待っていないため、相互待ちによるデッドロックにはなっていません。
選択肢ウ
これは不正解だよ。⑤では、Aがテーブルbを更新しようとしますが、bはBが保持しているため、Aは待機します。しかし、この時点では待機関係はAからBへの一方向だけで、Bはまだaのロック取得を試みていません。したがって循環待ちは完成していません。
選択肢エ(正解)
これは正解だよ。⑥では、Bがテーブルaを更新しようとしますが、aはAが保持しています。一方、Aは⑤でBが保持するbを待っています。このようにAはBを、BはAを待つ相互の循環が成立するため、デッドロックとなります。
学習のポイント
ロック保持と待機の向きを時系列で追い、循環待ちが成立する瞬間を判断する。
出典:独立行政法人 情報処理推進機構(IPA)平成29年度春期 データベーススペシャリスト試験 午前Ⅰ 問8(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針