3

Informix データベース サーバーで長時間実行されているクエリを確認するにはどうすればよいですか? CPU を使い果たしているクエリがあり、クエリが何であるかを調べたいと考えています。

4

4 に答える 4

7

クエリが現在実行中の場合は、onstat -g act -r 1の出力を監視し、 0ではないrstcbを持つアイテムを探します。

Running threads:
 tid     tcb             rstcb            prty status                vp-class      name
 106     c0000000d4860950 0                2    running               107soc        soctcppoll
 107     c0000000d4881950 0                2    running               108soc        soctcppoll
 564457  c0000000d7f28250 c0000000d7afcf20 2    running                 1cpu        CDRD_10

この例では、3番目の行が現在実行中のものです。rstcb値がゼロ以外の行が複数ある場合は、常にまたはほとんど常に存在する行を少し探してください。それはおそらくあなたが探しているセッションです。

c0000000d7afcf20は、この例で関心のあるアドレスです。

onstat-u|を使用します grep c0000000d7afcf20を使用して、セッションを検索します

c0000000d7afcf20 Y--P--- 22887    informix -        c0000000d5b0abd0 0    5     14060    3811

これにより、この例では22887であるセッションIDが得られます。onstat -g ses 22887を使用 して、そのセッションに関する情報を一覧表示します。私の例では、これはシステムセッションであるため、onstat-gsesの出力には何も表示されません。

于 2008-09-22T19:46:08.910 に答える
1

さて、sysmaster への接続方法を理解するのに少し時間がかかりました。JDBC 接続文字列は次のとおりです。

jdbc:informix-sqli://dbserver.local:1526/sysmaster:INFORMIXSERVER=mydatabase

ポート番号は、実際のデータベースに接続するときと同じです。つまり、接続文字列が次の場合です。

jdbc:informix-sqli://database:1541/crm:INFORMIXSERVER=crmlive

次に、sysmaster 接続文字列は次のとおりです。

jdbc:informix-sqli://database:1541/sysmaster:INFORMIXSERVER=crmlive

また、sysmaster テーブルを操作するための多数の SQL クエリを含むこの wiki ページも見つかりました。

于 2008-09-24T23:53:02.620 に答える
1

これは、提案された回答が Informix ではなく DB2 に対するものであるためです。

sysmaster データベース (Informix 共有メモリの仮想リレーショナル データベース) には、探している情報が含まれている可能性があります。これらのページは、開始するのに役立つ場合があります。

于 2008-09-17T06:13:13.097 に答える
-1
SELECT ELAPSED_TIME_MIN,SUBSTR(AUTHID,1,10) AS AUTH_ID, 
AGENT_ID, APPL_STATUS,SUBSTR(STMT_TEXT,1,20) AS SQL_TEXT
FROM SYSIBMADM.LONG_RUNNING_SQL
WHERE ELAPSED_TIME_MIN > 0
ORDER BY ELAPSED_TIME_MIN DESC

クレジット:実行時間の長いクエリを表示するための SQL

于 2008-09-09T15:12:52.053 に答える