情報処理安全確保支援士 平成29年春期 午前T 問8

午前T 問8

トランザクションAとBが,共通の資源であるテーブルaとbを表に示すように更新するとき,デッドロックとなるのはどの時点か。ここで,表中の①〜⑧は処理の実行順序を示す。また,ロックはテーブルの更新直前にテーブル単位で行い,アンロックはトランザクションの終了後に行うものとする。
am1/29.gif/image-size:411×166
  • [この問題の出題歴]
  • 応用情報技術者
    平成29年春期 問29と同題

分類

テクノロジ系 » データベース » トランザクション処理

正解

解説

デッドロックは、共有資源を使用する2つ以上のプロセスが、互いに相手プロセスの必要とする資源を排他的に使用していて、互いのプロセスが相手が使用している資源の解放を待っている状態に陥ってしまうことをいいます。
テーブルのロックに着目して処理を流れを見ていきましょう。
  1. ③でトランザクションAがテーブルaをロックする。
    am1/29_1.gif/image-size:312×135
  2. ④でトランザクションBがテーブルbをロックする。
    am1/29_2.gif/image-size:312×135
  3. ⑤でトランザクションAがテーブルbをロックしようとするが、既にトランザクションBにロックされているのでトランザクションAは待ち状態となる。
    am1/29_3.gif/image-size:312×135
  4. ⑥でトランザクションBがテーブルaをロックしようとするが、既にトランザクションAにロックされているのでトランザクションBは待ち状態となる。
    am1/29_4.gif/image-size:312×135
この状態ではトランザクションAはテーブルbのロック解放を待ち、トランザクションBはテーブルaのロック解放を待っているので、双方のトランザクションの進行がストップしてしまいます。したがってデッドロックが成立するのは⑥の時点です。
© 2014-2019 情報処理安全確保支援士ドットコム All Rights Reserved.

Pagetop