最近,由于性能的问题把一些大数据量的表改为分区表(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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。