微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Postgresql version 9.0 和之前版本的一个BUG

最近,由于性能的问题把一些大数据量的表改为分区表(partition table)。在postgresql下这个过程也是很艰难的,参见我的另一篇文章

本来这是一件利国利民的好事,谁料居然发生了没有料想到的事情。几天后有人发现对某个分区表的一个查询特别的慢。查看后发现数据量大概为500w-600w查询时间居然需要12s-13s。 这个不正常,分析后发现该sql中单单一个 select max(time_stamp) from **table; 的语句基本就耗费了11-12s。吼吼,这就更不正常了。查看查询分析的结果发现在所有分区的查询都是全表扫描(full table scan)。这不应该啊,因为字段time_stamp是联合主键之一啊怎么也应该是索引扫描啊(index scan),看来这就是查询性能低下的原因了。略过长时间的分析,未果。没辙了只好去postgrsql的maillist找答案,唉,果然给找到了,我擦。http://archives.postgresql.org/pgsql-performance/2011-02/msg00234.PHP

原来这是postgrsql一个bug,存在于9.0**和之前的版本中,我们正好使用的是9.0版本。唉。速度下载version9.1并试验同一个sql。耗时4-5ms,查看查询分析,都是索引扫描。 总结:使用不成熟的产品需谨慎啊,好在9.1.*已经在今年4月份release了,我们可以通过升级版本解决这个问题,要是没有release我们怎么办呢?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐