Postgres 9.3慢速聚合

时间:2015-11-11 10:30:10

标签: performance postgresql-9.3

再次成为性能调优问题:

查询

select 
    ipc_class_symbol,count ( tls201_appln.appln_id)
from
    tls201_appln,
    tls209_appln_ipc
where
    tls201_appln.appln_id=tls209_appln_ipc.appln_id
group by 
    tls209_appln_ipc.ipc_class_symbol

以计划执行

    "HashAggregate  (cost=9767241.49..9767481.92 rows=24043 width=16) (actual time=422312.135..422355.589 rows=72506 loops=1)"
"  Buffers: shared hit=992580"
"  ->  Merge Join  (cost=132.89..8764451.97 rows=200557904 width=16) (actual time=0.068..234936.829 rows=200557856 loops=1)"
"        Merge Cond: (tls201_appln.appln_id = tls209_appln_ipc.appln_id)"
"        Buffers: shared hit=992580"
"        ->  Index Only Scan using appln_id_idx on tls201_appln  (cost=0.57..1673775.53 rows=81711664 width=4) (actual time=0.033..26993.348 rows=72642821 loops=1)"
"              Heap Fetches: 0"
"              Buffers: shared hit=198493"
"        ->  Index Only Scan using tls209_appln_ipc_keyidx on tls209_appln_ipc  (cost=0.57..4604685.13 rows=200557904 width=16) (actual time=0.023..79085.426 rows=200557856 loops=1)"
"              Heap Fetches: 0"
"              Buffers: shared hit=794087"
"Total runtime: 422366.717 ms"

和持续时间

Total query runtime: 358032 ms.
72506 rows retrieved.

根据我的理解和阅读,我认为该计划有点优化。

该机为64GB,8核,专用win64bit服务器。索引表在SSD上,表格在旋转。

postgresql.conf调整为我在此处找到的值(页面费用,内存等)。

现在的问题是,在使用SQL Server DBMS的类似计算机上,相同的查询在~18秒内返回。

(我希望将PostgreSQL用于生产系统,因为从长远来看,我们会比透明度和透明度更好地提供透明度和理解力)

我的最后一个猜测是,可能与底层性能原语/库有某种关系(遗憾的是我无法与不同的操作系统进行比较)。

因此,任何关于如何缩短执行时间的提示/意见/建议都会受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

索引tls209_appln_ipc.ipc_class_symbol,你应该从中获得一些速度。