如何找出Informix数据库服务器上长时间运行的查询?我有一个耗尽CPU的查询,想知道查询是什么.
如果查询当前正在运行,请观察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
在此示例中,第三行是当前正在运行的行.如果你有多行具有非零rstcb值,那么请注意寻找总是或几乎总是在那里的那一行.这很可能是您要寻找的会话.
c0000000d7afcf20是我们对此示例感兴趣的地址.
使用onstat -u | grep c0000000d7afcf20找到会话
c0000000d7afcf20 Y--P--- 22887 informix - c0000000d5b0abd0 0 5 14060 3811
这将为您提供会话ID,在我们的示例中为22887.使用onstat -g ses 22887 列出有关该会话的信息.在我的例子中,它是一个系统会话,所以在onstat -g ses输出中没有什么可看的.