客户使用了Informix数据库,应用我们的产品的时候,总是报”Invalid Statement id”错误,是在对PreparedStatement执行close操作的时候发生的。百思不得其解,我们也不能重现。后来发觉原来是版本问题造成的,我们的产品只支持Informix9.3以上,而客户使用的是9.2,上网一查,Informix9.2已经不提供技术支持了,而且问题多多,建议客户换为9.4,果然就没有再报错了。
问题又来了,我们的产品会生成一个非常复杂的sql语句,在Informix上执行速度奇慢,几十条记录的查询也有超过1分钟,无法满足应用。发现如果把order by去掉,也就是不排序,则速度根本不成问题,瞬间就出来结果。看来Informix做的真是差。换成Oracle试一下,再多一些数据也没问题,也是瞬间出来。还是Informix有问题。可是问题得解决,要客户换数据库可是个大问题。于是又做了一把Informix调优的工作。
Informix的日志文件缺省才1.5M,简直无法使用,而且会造成很大的性能问题,因为数据库需要频繁地在6个小文件之间切换,增大后性能提高不少。DBSPACETEMP,用于设定临时数据空间,发现不使用的时候下比使用的时候性能要好得多,跟Informix文档提供的不一致。另外,开始查询的时候,数据库所在的机器的CPU利用率立刻大幅上涨,而客户的机器上几乎不变,也就是说,客户的机器CPU根本不工作,这应该是导致速度慢的一个重要原因,可惜没弄明白为什么会出现这个现象的。
问题又来了,我们的产品会生成一个非常复杂的sql语句,在Informix上执行速度奇慢,几十条记录的查询也有超过1分钟,无法满足应用。发现如果把order by去掉,也就是不排序,则速度根本不成问题,瞬间就出来结果。看来Informix做的真是差。换成Oracle试一下,再多一些数据也没问题,也是瞬间出来。还是Informix有问题。可是问题得解决,要客户换数据库可是个大问题。于是又做了一把Informix调优的工作。
Informix的日志文件缺省才1.5M,简直无法使用,而且会造成很大的性能问题,因为数据库需要频繁地在6个小文件之间切换,增大后性能提高不少。DBSPACETEMP,用于设定临时数据空间,发现不使用的时候下比使用的时候性能要好得多,跟Informix文档提供的不一致。另外,开始查询的时候,数据库所在的机器的CPU利用率立刻大幅上涨,而客户的机器上几乎不变,也就是说,客户的机器CPU根本不工作,这应该是导致速度慢的一个重要原因,可惜没弄明白为什么会出现这个现象的。
客户使用Informix数据库搭配产品时,出现报错和查询速度慢的问题。报错是版本不兼容所致,建议升级到9.4后解决。查询慢方面,去掉排序可提速,还进行了调优工作,如增大日志文件、调整临时数据空间,但仍有CPU利用率问题未解决,换Oracle则无此问题。

6397

被折叠的 条评论
为什么被折叠?



