Dead Lock Jp
デッドロック
デッドロックは複数のセッション間起こるお互いにロックし、自動的に解除できない現象です。
デッドロックの発生に必要な条件は次の4点です。
- 特定のリソースの数が限られている。相互排除ロックである。
- 1 つのリソースを保持したまま別のリソースを要求できる。
- 横取りができない。
- 循環待機の状態。
四つで必要条件になりますので、どちらひとつ解決すれば、デットロックが発生しません。
オラクルは常にセッション間の循環待機を監視しているため、デットロックが発生した場合自動的にひとつセッションのオペレーションを終了するようにしています。
また、アプリケーション開発でデッドロックは下記の方法で回避します。
- テーブルを一律決めた順番で更新(挿入、削除含む)する。
- オペレーションのタイムアウトを設定する。
- オペレーションのシミュレーションをあらかじめ行う。
page_revision: 2, last_edited: 1239689777|%e %b %Y, %H:%M %Z (%O ago)





