平成29年度 春期 応用情報技術者試験 午前 問29
テクノロジ/データベーストランザクションAとBが,共通の資源であるテーブルaとbを表に示すように更新するとき,デッドロックとなるのはどの時点か。ここで,表中の①〜⑧は処理の実行順序を示す。また,ロックはテーブルの更新直前にテーブル単位で行い,アンロックはトランザクション終了時に行うものとする。 ① トランザクションA:トランザクション開始 ② トランザクションB:トランザクション開始 ③ トランザクションA:テーブルa更新 ④ トランザクションB:テーブルb更新 ⑤ トランザクションA:テーブルb更新 ⑥ トランザクションB:テーブルa更新 ⑦ トランザクションA:トランザクション終了 ⑧ トランザクションB:トランザクション終了 (注:本サイトでは原問題の表を文字表記に変換しています)
出典:平成29年度 春期 応用情報技術者試験 午前 問29
- ア③
- イ④
- ウ⑤
- エ⑥
正解:エ
解説
③でAがテーブルaをロックし,④でBがテーブルbをロックします。⑤でAはテーブルbの更新を試みますが,bはBがロック中のため待たされます(Aはブロックされるがまだデッドロックではありません)。⑥でBがテーブルaの更新を試みると,aはAがロック中のため待たされ,この時点でAはbを,BはaをそれぞぞれAとBが互いに待ち合うデッドロック状態が成立します。
選択肢ごとの解説
- ア誤り。③はAがテーブルaを最初にロックする時点であり,まだ資源の競合は発生していません。
- イ誤り。④はBがテーブルbを最初にロックする時点であり,まだ資源の競合は発生していません。
- ウ誤り。⑤の時点ではAがbの空きを待ち始めるだけで,Bはまだ他の資源を待っていないため,デッドロックはまだ成立していません。
- エ正しい。⑥でBがAの保持するテーブルaを要求してブロックされることにより,AとBが互いに相手の資源を待ち合うデッドロックが成立します。