平成19年春期試験問題 午前問67

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

正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:トランザクション処理
解説
デッドロックは、共有資源を使用する2つ以上のプロセスが、互いに相手プロセスの必要とする資源を排他的に使用していて、互いのプロセスが相手が使用している資源の解放を待っている状態に陥ってしまうことをいいます。
テーブルのロックに着目して処理を流れを見ていきましょう。
  1. ③でトランザクションAがテーブルaをロックする。
    67_1.gif
  2. ④でトランザクションBがテーブルbをロックする。
    67_2.gif
  3. ⑤でトランザクションAがテーブルbをロックしようとするが、既にトランザクションBにロックされているのでトランザクションAは待ち状態となる。
    67_3.gif
  4. ⑥でトランザクションBがテーブルaをロックしようとするが、既にトランザクションAにロックされているのでトランザクションBは待ち状態となる。
    67_4.gif
この状態ではトランザクションAはテーブルbのロック解放を待ち、トランザクションBはテーブルaのロック解放を待っているので、双方のトランザクションの進行がストップしてしまいます。したがってデッドロックが成立するのは⑥の時点です。

この問題の出題歴


Pagetop