トランザクションAとBが,共通の資源であるテーブルaとbを表に示すように更新するとき,デッドロックとなるのはどの時点か。ここで,表中の①〜⑧は処理の実行順序を示す。また,ロックはテーブルの更新直前にテーブル単位で行い,アンロックはトランザクション終了時に行うものとする。
| トランザクションA | トランザクションB |
|---|---|
| ① トランザクション開始 | |
| ② トランザクション開始 | |
| ③ テーブルa更新 | |
| ④ テーブルb更新 | |
| ⑤ テーブルb更新 | |
| ⑥ テーブルa更新 | |
| ⑦ トランザクション終了 | |
| ⑧ トランザクション終了 |
テクノロジ系
トランザクションAとBが,共通の資源であるテーブルaとbを表に示すように更新するとき,デッドロックとなるのはどの時点か。ここで,表中の①〜⑧は処理の実行順序を示す。また,ロックはテーブルの更新直前にテーブル単位で行い,アンロックはトランザクション終了時に行うものとする。
| トランザクションA | トランザクションB |
|---|---|
| ① トランザクション開始 | |
| ② トランザクション開始 | |
| ③ テーブルa更新 | |
| ④ テーブルb更新 | |
| ⑤ テーブルb更新 | |
| ⑥ テーブルa更新 | |
| ⑦ トランザクション終了 | |
| ⑧ トランザクション終了 |
正解 エ
デッドロックは、互いに相手が持つロックを待ち合う状態です。Aがbを待っている状態で、⑥でBがAのロックするaを要求した時点で成立します。
③でAがテーブルaをロックし、④でBがテーブルbをロックします。⑤でAがbを更新しようとしますが、bはBがロックしているので、Aは待ち状態になります。⑥でBがaを更新しようとしますが、aはAがロックしているので、Bも待ち状態になります。アンロックはトランザクション終了時にしか行われないため、AとBは互いの解放を待ち続けます。そのため、⑥の時点でデッドロックになります。
ア:③ではAがテーブルaをロックするだけです。ほかにロックを持つトランザクションはなく、待ちは発生しません。
イ:④ではBがテーブルbをロックするだけです。bはまだ誰もロックしていないので、待ちは発生しません。
ウ:⑤ではAがbの解放を待つだけです。この時点のBは待ち状態ではないので、まだデッドロックではありません。
出典:平成29年度 春期 応用情報技術者試験 問29
全年度から出題。10問で実力を判定します。登録不要。
出典:平成29年度 春期 応用情報技術者試験 問29(独立行政法人情報処理推進機構)
解説と用語ページは生成 AI が書き、別の生成 AI が確かめています。作り方