平成29年度春期 問29 / 80

平成29年度 春期 応用情報技術者試験 午前 問29

トランザクションAとBが,共通の資源であるテーブルaとbを表に示すように更新するとき,デッドロックとなるのはどの時点か。ここで,表中の①〜⑧は処理の実行順序を示す。また,ロックはテーブルの更新直前にテーブル単位で行い,アンロックはトランザクション終了時に行うものとする。

トランザクションA トランザクションB
① トランザクション開始
② トランザクション開始
③ テーブルa更新
④ テーブルb更新
⑤ テーブルb更新
⑥ テーブルa更新
⑦ トランザクション終了
⑧ トランザクション終了

(表の上から下へ時間が進む)

キーボード:1〜4 で解答 → 次の問題 ← 前の問題

正解と解説を見る

正解:エ

処理を順に追います。 - ③:Aがテーブルaをロックして更新します。 - ④:Bがテーブルbをロックして更新します。 - ⑤:Aがテーブルbを更新しようとしますが,bはBがロック中なので,Aは待ち状態になります。 - ⑥:Bがテーブルaを更新しようとしますが,aはAがロック中なので,Bも待ち状態になります。

ロックはトランザクション終了時まで解除されないため,AとBが互いに相手のロック解除を待ち続けるデッドロックが⑥の時点で発生します。

  • ア: ③
    誤り。Aがテーブルaをロックするだけで,まだ競合は起きていません。

  • イ: ④
    誤り。Bがテーブルbをロックするだけで,aとは別のテーブルなので競合は起きていません。

  • ウ: ⑤
    誤り。Aがbのロック解除待ちになりますが,Bはまだ処理を進められるので,デッドロックではありません。

  • エ: ⑥
    正しい。Bがaのロック解除待ちになり,AとBが互いに相手を待つ状態になるため,デッドロックが発生します。


答え

エ: ⑥

出典:平成29年度 春期 応用情報技術者試験 午前 問29

平成29年度春期の他の問題