在生产中,我面临着这个问题。Informix DELETE查询需要很长时间
有一个delete
需要很长时间才能执行并最终抛出-243
的SQL错误。
我使用onstat -g
得到了查询。
有什么方法可以找出是什么导致它花费这么多时间,最后出错?
它使用COMMITTED READ
隔离。
这也导致了很高的Informix CPU使用率。
编辑
环境 - 在Solaris
我没有看到相关的索引或应用程序逻辑的任何问题,但我怀疑一些Informix的腐败的Informix 9.2。
在执行此DELETE
查询时,会话在不同的表上保存8个锁。
但是,我没有看到delete
执行表上的任何锁。
会是这样吗,informix无法锁定表格?
您是否试过将'DELETE FROM TABLE WHERE ...'作为'SELECT * FROM Table WHERE ...'(适用于所有列的任何合适的子集)并查看了查询计划?这个工作有多快?表格是否具有斑点列或智能斑点列? DELETE的查询计划是什么?它如何与SELECT计划进行比较?是否有索引缺失可以加快速度?桌上有多少个索引?有那么多的减少索引的数量会提高性能?哪个版本的Informix?在哪个平台上运行? – 2013-03-07 19:30:09
表在2列上具有组索引,删除也基于该2列。 – cppcoder 2013-03-08 07:31:53