PG中文社区 /
mdi-home
首页 社区新闻 中文文档 加入ACE {{ item.text }} 登录
mdi-home 首页 mdi-chat-processing 社区新闻 mdi-book-open-variant 中文文档 mdi-account-multiple-check 加入ACE mdi-file-multiple-outline 相关资料 mdi-blank {{item.text}} mdi-exit-to-app 退出账号
PostgreSQL9.6 Parallel sequential scans 初体验

原作者:francs / 谭峰  创作时间:2016-10-17 12:29:31+08  
doudou586 发布于2016-10-17 12:29:31           评论: 6   浏览: 11198   顶: 3434  踩: 3388 

PostgreSQL9.6 Parallel sequential scans 初体验

2016 Postgres大象会官方报名通道: 点此报名



作者: francs

日期: 2016-05-07

Oracle 支持强大的并行功能,创建索引,表分析,数据加载时可以开启并行,这项功能让很多数据库产品垂涎, 作为开源数据库 PostgreSQL 在并行方面也在努力尝试,很早之前 PostgreSQL 几乎不支持任何并行的作业,到了 9.5 版本 PostgreSQL 支持并行的 vacuum,到了 9.6 后, PostgreSQL 支持并行的顺序扫描,这是令人振奋的消息,因为这极大的提升了 PostgreSQL 统计分析SQL的性能,由于硬件环境限制,今天简单体验下,以下实验在笔记本虚拟机上进行。

一 关于 max_parallel_degree (integer) 参数

这个参数配置决定了每个 parallel query 并行操作允许的最大后台进程数,这个值的设置受后台进程数参数 max_worker_processes 限制。

二 PostgreSQL9.6 Beta1 测试

--设置 max_parallel_degree

[pg96@db1 ~]$ grep "max_parallel_degree" $PGDATA/postgresql.conf
max_parallel_degree = 4       # max number of worker processes per node

--创建测试表

[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=> explain analyze select count(*) from test_big1;
-------------------------------------------------------------------
 Finalize Aggregate  (cost=45560.42..45560.43 rows=1 width=8) 
                 (actual time=4236.468..4236.469 rows=1 loops=1)
   ->  Gather  (cost=45560.00..45560.41 rows=4 width=8) 
                 (actual time=4232.517..4232.556 rows=5 loops=1)
         Workers Planned: 4
         Workers Launched: 4
         ->  Partial Aggregate  (cost=44560.00..44560.01 rows=1 width=8) 
                    (actual time=4182.972..4182.973 rows=1 loops=5)
               ->  Parallel Seq Scan on test_big1  (cost=0.00..41435.00 rows=1250000 width=0)
                       (actual time=0.034..2450.966 rows=1000000 loops=5)
 Planning time: 112.309 ms
 Execution time: 4236.920 ms
(8 rows)

备注:执行多次,执行时间大概都在4秒多点,从执行计划中看到走了并行顺序扫描“Parallel Seq Scan on test_big1”,再细看“Workers Launched: 4”,表示开启了四个并行进程。

--查看并行顺序扫描进程

top - 20:59:28 up 3 days, 19:00, 3 users, load average: 0.49, 0.57, 0.39
Tasks: 185 total, 7 running, 178 sleeping, 0 stopped, 0 zombie
Cpu(s): 5.8%us, 26.4%sy, 0.0%ni, 62.9%id, 4.0%wa, 0.2%hi, 0.8%si, 0.0%st
Mem:   249112K total, 245312k used,   3800k free,    820k buffers
Swap: 1605624k total, 627336k used, 978288k free, 193532k cached

 PID USER  PR NI VIRT  RES   SHR S %CPU  %MEM  TIME+   COMMAND
4967 pg96  20  0 181m  8836 8072 R 15.6   3.5  0:00.47 postgres: bgworker:parallel worker for PID 4706
4706 pg96  20  0 181m  134m 133m R 13.6  55.2  0:53.77 postgres: francs francs [local] EXPLAIN
4965 pg96  20  0 181m  9712 8948 R 11.9   3.9  0:00.36 postgres: bgworker:parallel worker for PID 4706
4968 pg96  20  0 181m  8768 8004 R 11.3   3.5  0:00.34 postgres: bgworker:parallel worker for PID 4706
4966 pg96  20  0 181m  8632 7868 R 10.9   3.5  0:00.33 postgres: bgworker:parallel worker for PID 4706

备注:图中可看到出现了四个 parallel worker 进程。

三 PostgreSQL9.5 测试

测试之前先把 PostgreSQL 9.6 的数据库关了,在确保相等情况下进行测试。

--创建测试表

[pg95@db1 ~]$ psql fdb fdb
psql (9.5alpha1)
Type "help" for help.

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

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

fdb=> explain analyze select count(*) from test_big1;
                     QUERY PLAN 
------------------------------------------------------
 Aggregate  (cost=91435.00..91435.01 rows=1 width=0) 
         (actual time=8389.093..8389.094 rows=1 loops=1)
   ->  Seq Scan on test_big1  (cost=0.00..78935.00 rows=5000000 width=0) 
          (actual time=9.958..4781.116 rows=5000000 loops=1)
 Planning time: 2.436 ms
 Execution time: 8391.758 ms
(4 rows)

备注:多次执行,时间在 8 秒左右。

四 总结

由于硬件关系原因,本测试只在笔记本虚拟机上测试,在这个全表扫描测试场景下, PostgreSQL 9.6 是 PostgreSQL9.5 性能的两倍,今天仅是初步体验并行扫描,可以预测如果在X86服务器上测试,这个性能倍数会高一些,后续测试并行扫描的其它场景;个人认为 PostgreSQL 对并行顺序扫描的支持,在统计分析性能方面的提升前进了一大步。

五 参考


2016 Postgres大象会官方报名通道:http://www.huodongxing.com/event/8352217821400

扫描报名


/images/news/2016/pgconf2016_qrcode.jpg


/images/news/2016/pgconf2016_plus_logo_cn.png


评论:6   浏览: 11198                   顶: 3434  踩: 3388 

请在登录后发表评论,否则无法保存。

1# __ xcvxcvsdf 回答于 2024-11-12 20:53:11+08
http://ruanwen.xztcxxw.cn/hnyyd/ http://huilong.sctcbmw.cn/zx/ http://huaguang.jxtcbmw.cn/twjy/ http://bjtcxxw.cn/gxcz/ https://xjhuaqiao.tiancebbs.cn/ http://taiying.njtcbmw.cn/fjx/ http://fuyang.tjtcbmw.cn/csjz/ http://shenghuo.china-bbs.com/ynxsbn/ http://bjtcxxw.cn/zaozhuang/ http://huilong.sctcbmw.cn/cqjj/ http://huilong.sctcbmw.cn/sjzr/ http://fs.shtcxxw.cn/minhangqu/ http://fuyang.tjtcbmw.cn/sjsq/ http://huaguang.jxtcbmw.cn/hefei/ http://ty.cqtcxxw.cn/huaibei/ http://gx.lztcxxw.cn/shgcheng/ https://haifenghm.tiancebbs.cn/

2# __ xcvxcvsdf 回答于 2024-10-26 13:58:33+08
http://taiying.njtcbmw.cn/jlly/ http://jinqiang.ahtcbmw.cn/hnhy/ https://mingsui.tiancebbs.cn/ https://pujiangxian.tiancebbs.cn/ http://huilong.sctcbmw.cn/hnyyv/ http://jingren.hftcbmw.cn/daxinganling/ http://cf.lstcxxw.cn/cqwz/ http://js.sytcxxw.cn/scsn/ https://xujiahui.tiancebbs.cn/ http://jinqiang.ahtcbmw.cn/su-zhou/ http://shengshun.njtcbmw.cn/hainanzhou/ https://aihuishou.tiancebbs.cn/lwqsh/ https://gnchanyeyuan.tiancebbs.cn/ http://wutai.cqtcxxw.cn/shangrao/ http://gx.lztcxxw.cn/cqsh/ http://tuiguang.hntcxxw.cn/xjcj/ https://ld.tiancebbs.cn/

3# __ xcvxcvsdf 回答于 2024-10-26 03:56:06+08
https://fenlei.tiancebbs.cn/bmys/ http://yz.cqtcxxw.cn/zcrsy/ https://honglan.tiancebbs.cn/hangzhou/ http://yz.cqtcxxw.cn/hnzz/ http://ouyu.hftcbmw.cn/sjjza/ http://gx.lztcxxw.cn/wulumuqi/ http://km.lstcxxw.cn/hezhou/ http://wutai.cqtcxxw.cn/xian/ https://fenlei.tiancebbs.cn/yingkou/ http://taiying.njtcbmw.cn/sxdt/ http://gx.lztcxxw.cn/changningqu/ https://suzhou.tiancebbs.cn/ https://honglianzhongli.tiancebbs.cn/ http://js.sytcxxw.cn/bozhou/ http://km.lstcxxw.cn/quzhou/ https://daye.tiancebbs.cn/ https://nanfen.tiancebbs.cn/

4# __ xcvxcvsdf 回答于 2024-10-22 13:37:33+08
https://su.tiancebbs.cn/hjzl/457888.html https://zulin.tiancebbs.cn/sh/336.html https://www.tiancebbs.cn/ershoufang/473624.html https://www.tiancebbs.cn/ershoufang/472233.html https://zulin.tiancebbs.cn/sh/3129.html https://aihuishou.tiancebbs.cn/sh/2039.html https://aihuishou.tiancebbs.cn/sh/671.html https://changshushi.tiancebbs.cn/hjzl/466496.html https://www.tiancebbs.cn/ershouwang/471766.html https://aihuishou.tiancebbs.cn/sh/1480.html https://aihuishou.tiancebbs.cn/sh/3157.html https://su.tiancebbs.cn/hjzl/471122.html https://sanya.tiancebbs.cn/qths/456591.html https://www.tiancebbs.cn/jinchukoubaoguan/57346.html https://qingbeijiang.tiancebbs.cn/qths/452010.html https://gz.tiancebbs.cn/ylqzw/57902.html https://sanya.tiancebbs.cn/qths/453336.html

5# __ xcvxcvsdf 回答于 2024-10-18 20:06:15+08
https://beijiezhen.tiancebbs.cn/ http://huilong.sctcbmw.cn/hbycd/ http://shengshun.njtcbmw.cn/foshan/ http://yuanbang.tjtcbmw.cn/shluwan/ http://yz.cqtcxxw.cn/hgzpw/ http://gx.lztcxxw.cn/esddc/ https://lcfuchengzhen.tiancebbs.cn/ https://honglan.tiancebbs.cn/gannan/ http://wogao.ahtcbmw.cn/huainan/ http://gx.lztcxxw.cn/jinshanqu/ http://bjtcxxw.cn/bazhong/ http://wutai.cqtcxxw.cn/yunfu/ http://ouyu.hftcbmw.cn/shanwei/ http://js.sytcxxw.cn/twtz/ https://chikanqu.tiancebbs.cn/ http://cf.lstcxxw.cn/sxll/ http://js.sytcxxw.cn/xhpj/

6# __ xiaowu 回答于 2024-04-22 09:24:09+08
高级一点说自己喝西北风:https://www.nanss.com/yulu/1669.html 家人一切安好的唯美短句:https://www.nanss.com/yulu/1882.html 老房子拆迁的文案:https://www.nanss.com/wenan/1718.html 劝别人想开点的句子:https://www.nanss.com/wenan/1870.html 游戏昵称古风:https://www.nanss.com/mingcheng/1809.html 油腻情话:https://www.nanss.com/wenan/1578.html 游戏女名字:https://www.nanss.com/mingcheng/1834.html 帅气网名:https://www.nanss.com/mingcheng/1832.html 半夜放毒的说说:https://www.nanss.com/wenan/1674.html 夜班下班早晨的说说:https://www.nanss.com/yulu/1655.html 亲人陪我过生日感谢的话:https://www.nanss.com/yulu/1546.html 优雅的网名:https://www.nanss.com/mingcheng/1831.html 宝妈网名大全2022最新版:https://www.nanss.com/mingcheng/1762.html 粗茶淡饭朋友圈说说:https://www.nanss.com/wenan/1845.html 心属一人的网名:https://www.nanss.com/mingcheng/1619.html 做好事做善事的句子:https://www.nanss.com/yulu/1631.html 高情商女人让男人开心句子:https://www.nanss.com/wenan/1727.html 一个人喝酒的文案:https://www.nanss.com/wenan/1640.html 感谢遇见你的唯美句子:https://www.nanss.com/yulu/1791.html 初次见面表白情话100字:https://www.nanss.com/shenghuo/1731.html 不矫情的女人霸气说说:https://www.nanss.com/wenan/1705.html 描写双向暗恋的唯美句子:https://www.nanss.com/yulu/1554.html 土味情话恶心又油腻:https://www.nanss.com/yulu/1671.html 网名有内涵有深度:https://www.nanss.com/mingcheng/1944.html 直播间私信感谢话:https://www.nanss.com/wenan/1769.html 健康平安就好的说说:https://www.nanss.com/wenan/1796.html 暗示自己占有欲强的文案:https://www.nanss.com/wenan/1943.html 能勾男人的昵称:https://www.nanss.com/mingcheng/1977.html 事业低谷期文案短句:https://www.nanss.com/wenan/1726.html 平安的句子经典:https://www.nanss.com/xuexi/1664.html



发表评论:
加入我们
QQ群1:5276420
QQ群2:3336901
QQ群3:254622631
文档群:150657323
文档翻译平台:按此访问
社区邮件列表:按此订阅
商业支持
扫码关注
加入我们
QQ群1:5276420
QQ群2:3336901
QQ群3:254622631
文档群:150657323
文档翻译平台:按此访问
社区邮件列表:按此订阅
商业支持
扫码关注
© PostgreSQL中文社区 ... (自2010年起)