応用情報 午前ラボ

学習の画面へ

デッドロックの発生時点

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

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

時間は上から下へ進む。

トランザクション Aトランザクション B
① トランザクション開始
② トランザクション開始
③ テーブル a 更新
④ テーブル b 更新
⑤ テーブル b 更新
⑥ テーブル a 更新
⑦ トランザクション終了
⑧ トランザクション終了
  1. ア ③
  2. イ ④
  3. ウ ⑤
  4. エ ⑥
正解と解説を見る

正解: エ

ポイント

ロックは更新の直前に取り、トランザクション終了まで解放しません。

  1. ③ A がテーブル a をロックします。
  2. ④ B がテーブル b をロックします。
  3. ⑤ A がテーブル b を更新したいが、B が持っているので 待ち になります。
  4. ⑥ B がテーブル a を更新したいが、A が持っているので待ちになります。

⑥ の時点で 互いに相手のロック解除を待つ循環 ができ、デッドロックになります。

「データベース」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)