まず、あなたは、IBMは、Informix Dynamic Server(IDS)、バージョン9.40は、もはやIBMによってサポートされていることに注意する必要があります。どちらも後継バージョンではなく、10.00です。おそらく11.70に、おそらく11.50にアップグレードする予定です。
包括的にロックを追跡する方法はありません。この理由の1つは、そのような追跡がシステムにかなりの減速をかけることである - 非常にかなりの減速。ロックは、通常、(データページを含むバッファプールの後ろの)共有メモリの第2番目のコンポーネントであるため、それらの多くがあり、頻繁に非常にアクティブであり、しばしばロックが頻繁に保持されます(秒、または1ミリ秒の数分の1)である。そのようなロギングから生成されるデータの量は非常に大きく、選別することは非常に困難です。
DB-CronとAdmin APIのサポートにはいくつかのオプションがありますが(それは確かではありませんが、その可能性は高くなります)、9.40ではオプションがかなり厳しく制限されています。
私が考えることができる最も近いアプローチは、onstat -k -u -r 1
でのスナップショットです。 -k
は、あなたが既に知っているように、ロックテーブルを報告します。ユーザー(セッション)に関する-u
のレポートと、-r 1
は毎秒コマンドを繰り返します。必要に応じて他のデータリクエストを追加することができます。 -g ses
はセッションに関するより詳細なレポートを提供します(あなたがDBSAの場合、通常はコマンドを実行するときにinformix
というユーザ)。しかし、これは1秒のサンプリングです...唯一の良いニュースは、ロックがテーブルに置かれると、しばらくの間(その問題に気が付いたので)ぶら下がる可能性があるので、-g ses
または-u
出力があなたに伝えます誰がロックを適用するのか。しかし、暫定的なデータ量は大きくなるでしょう。
システムを囲んでいるSQLをすべて確認して、テーブルをロックしているものを探してください。タイミングに一貫性はありますか?たとえば、cronジョブによってUPDATE STATISTICSが実行されている可能性がありますか?それはテーブルロックを一瞬で獲得すると私は信じている。あなたのバージョンのIDS以降のリリースでも改善されているものです。
あなたはinformixの専門家でなければなりません!大変ありがとう。私はたくさんのことを学んだ。 – idiotgenius