平成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