注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

PostgreSQL 中文网

 
 
 

日志

 
 

PostgreSQL9.6:Parallel aggregates 初体验  

2016-05-19 16:30:16|  分类: Postgres基础 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 
 PostgreSQL9.6 新版本不仅支持并行的 sequential scans,而且支持并行的 aggregates 操作,下面演示下。


--测试环境
笔记本 thinkpas x250 虚拟机 , CPU 双核双线程。

--创建测试表

[pg96@db1 ~]$ psql francs francs
psql (9.6beta1)
Type "help" for help.

francs=> create table test_big1(id serial, name character varying(64),create_time timestamp(0) without time zone);
CREATE TABLE

francs=> insert into test_big1(id,name)select n, n||'_test' from generate_series(1,5000000)n;
INSERT 0 5000000


--不开启并行

francs=> set max_parallel_degree =0;
SET

francs=> explain analyze select sum(id) from test_big1;
                                                         QUERY PLAN                                                         
----------------------------------------------------------------------------------------------------------------------------
 Aggregate  (cost=91435.00..91435.01 rows=1 width=8) (actual time=3569.480..3569.480 rows=1 loops=1)
   ->  Seq Scan on test_big1  (cost=0.00..78935.00 rows=5000000 width=4) (actual time=7.109..2252.965 rows=5000000 loops=1)
 Planning time: 14.424 ms
 Execution time: 3596.088 ms
(4 rows)

备注:不开启并行,查询时间 3596 ms。

--开启并行1

francs=> set max_parallel_degree =1;
SET

francs=> explain analyze select sum(id) from test_big1;
                                                                   QUERY PLAN                                                       
             
-------------------------------------------------------------------------------------------------------------------------------------------------
 Finalize Aggregate  (cost=66699.82..66699.83 rows=1 width=8) (actual time=3206.424..3206.424 rows=1 loops=1)
   ->  Gather  (cost=66699.71..66699.82 rows=1 width=8) (actual time=3196.270..3196.285 rows=2 loops=1)
         Workers Planned: 1
         Workers Launched: 1
         ->  Partial Aggregate  (cost=65699.71..65699.72 rows=1 width=8) (actual time=3157.948..3157.949 rows=1 loops=2)
               ->  Parallel Seq Scan on test_big1  (cost=0.00..58346.76 rows=2941176 width=4) (actual time=4.789..2128.432 rows=2500
000 loops=2)
 Planning time: 27.492 ms
 Execution time: 3229.083 ms
(8 rows)

 备注:开启并行1,查询时间 3229 ms。

--测试结果
设置不同 max_parallel_degree, 多次测试结果如下: 
 max_parallel_degree 最优 Execution time(ms)
 0 3596
 1 3229
 2 2665
 3 2882
 4 2879
 5 2549
 6 2656
 7 2538
 8 3064
      

PostgreSQL9.6:Parallel aggregates 初体验 - francs - PostgreSQL DBA
 
备注:每次更改 max_parallel_degree 参数时,测试三次取最短查询时间,从图中看出,max_parallel_degree 设置值从0增加到8的过程中,本次测试的 SQL 的执行时间是降低的,当增加到9时,执行时间反而增加。       
            
--参考
  评论这张
 
阅读(461)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016