IBM® Informix® 12.10

デッドロックの監視

デッドロックを監視できます。デッドロック は、2 つのユーザがロックを保持し、どちらのユーザも相手の所有するロックを取得しようとしているときに発生します。

例えば、ユーザ pradeep は行 10 にロックを保持しています。ユーザ jane は行 20 にロックを保持しています。このとき、jane が行 10 にロックを設定しようとし、pradeep が行 20 にロックを設定しようとすると仮定します。両ユーザが SET LOCK MODE TO WAIT 文を実行すると、互いに永久に待機し続けることになる場合があります。

Informix® では、ロック表を使用してデッドロックを自動的に検出し、未然に停止します。ロックが許可される前に、データベース サーバは各ユーザのロック リストを検査します。要求者がロックしようとしているリソース上にユーザがロックを保持している場合、データベース サーバはそのユーザのロック待機リストをトラバースして、そのユーザが要求者の保持しているロックを待機しているかどうか調べます。待機している場合、要求者はデッドロック エラーを受け取ります。

デッドロック エラーは、複数のアプリケーションが同じ行を頻繁に更新している場合には、避け難いものになります。しかし特定のアプリケーションどうしが常に競合する可能性もあります。デッドロックを多数作成するアプリケーションを検査し、それらをいろいろな時間に実行してみます。

デッドロックの数を監視するには、onstat -p の出力にあるフィールド deadlks を使用します。

分散トランザクションでは、データベース サーバはほかのデータベース サーバ システムのロック表を検査しません。このためデッドロックは発生するまで検出できません。代わりに構成パラメータ DEADLOCK_TIMEOUT を設定することができます。DEADLOCK_TIMEOUT は、データベース サーバがエラーを戻す前にリモート データベース サーバからの応答を待機する秒数を指定します。分散デッドロックは遅れを生じる原因にもなりますが、このメカニズムによって、トランザクションが無期限に停止するのを回避することができます。

分散デッドロック タイムアウトの数を監視するには、onstat -p による出力のフィールド dltouts を使用します。


フィードバックの送信 | 例の共有 | トラブルシューティング

PDF を見つけるには、Publications for the IBM Informix 12.10 family of products を参照してください。
リリース ノート、ドキュメント ノート、マシン ノートについては、リリース ノート・ページを参照してください。
タイムスタンプ リリース日: 2013 年 3 月