【发布时间】:2013-03-07 05:05:51
【问题描述】:
在生产中,我遇到了这个问题。
有一个delete 需要很长时间才能执行并最终抛出-243 的SQL 错误。
我使用onstat -g 得到了查询。
有什么方法可以找出导致它花费这么多时间并最终出错的原因?
它使用COMMITTED READ隔离。
这也会导致 Informix cpu 使用率过高。
编辑
环境 - Solaris 上的 Informix 9.2
我没有发现任何与索引或应用程序逻辑相关的问题,但我怀疑存在一些 informix 损坏。
执行此DELETE 查询时,会话在不同的表上持有 8 个锁。
但是,我在执行delete 的表上看不到任何锁。
会不会是,informix 无法锁定桌面?
【问题讨论】:
-
您是否尝试将
DELETE FROM Table WHERE ...作为SELECT * FROM Table WHERE ...运行(对于所有列的任何合适的子集)并查看查询计划?它的工作速度有多快?表是否有 blob 列或智能 blob 列? DELETE 给出的查询计划是什么?它与 SELECT 计划相比如何?是否缺少可以加快速度的索引?表上有多少个索引?减少索引数量会提高性能吗?哪个版本的 Informix?在哪个平台上运行? -
表在 2 列上有一个组索引,删除也基于这 2 列。
标签: informix