トランザクション処理 (全65問中56問目)

No.56

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

分類

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

正解

解説

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

Pagetop