このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ

デッドロックの監視

  • デッドロックの発生を監視し、発生した場合には一方のトランザクションをロールバックする。

デッドロックを監視する方法

  • 待ち合わせグラフ
    • 起動しているトランザクションの状態をグラフとしてすべて調べ、デッドロックの発生を調べる。
  • タイマー監視
    • 一定時間ごとに、停止しているトランザクションを調べてデッドロックの発生を調べる。

[練習問題]H19春SW午前問67

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

トランザクションAトランザクションB
.肇薀鵐競ション開始
▲肇薀鵐競ション開始
テーブルa更新
ぅ董璽屮b更新
ゥ董璽屮b更新
Ε董璽屮a更新
Д肇薀鵐競ション終了
┘肇薀鵐競ション終了
  • ア:
  • イ:
  • ウ:
  • エ:

[解答]

  • トランザクションAはの直前にテーブルaをロックする。
  • トランザクションBはい猟樵阿縫董璽屮bをロックする。
  • トランザクションAはイ猟樵阿縫董璽屮bにロックを試みるが、解除待ちになる。
  • トランザクションBはΔ猟樵阿縫董璽屮aにロックを試みるが、解除待ちになる。
    • ここでデッドロックが発生するので、答えはエである。

参考文献

  • 『情報処理技術者試験 やさしく学ぶデータベース技術』