在Informix上查找长时间运行的查询?

gro*_*rom 2 database informix

如何找出Informix数据库服务器上长时间运行的查询?我有一个耗尽CPU的查询,想知道查询是什么.

DL *_*den 5

如果查询当前正在运行,请观察onstat -g act -r 1输出并查找rstcb不为0的项目

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
Run Code Online (Sandbox Code Playgroud)

在此示例中,第三行是当前正在运行的行.如果你有多行具有非零rstcb值,那么请注意寻找总是或几乎总是在那里的那一行.这很可能是您要寻找的会话.

c0000000d7afcf20是我们对此示例感兴趣的地址.

使用onstat -u | grep c0000000d7afcf20找到会话

c0000000d7afcf20 Y--P--- 22887    informix -        c0000000d5b0abd0 0    5     14060    3811
Run Code Online (Sandbox Code Playgroud)

这将为您提供会话ID,在我们的示例中为22887.使用onstat -g ses 22887 列出有关该会话的信息.在我的例子中,它是一个系统会话,所以在onstat -g ses输出中没有什么可看的.