暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL并行特性版本演进

原创 多米爸比 2020-08-23
1434

1.并行备份恢复

从9.3版本开始支持并行备份。

$ pg_dump --help |grep "\--jobs"
  -j, --jobs=NUM               use this many parallel jobs to dump

$ pg_restore --help |grep "\--jobs"
  -j, --jobs=NUM               use this many parallel jobs to restore
复制

并行备份恢复需要配合-Fd格式来使用

2.并行vacuum

从9.5版本开始支持并行清理database。

$ vacuumdb --help |grep "\--jobs"
  -j, --jobs=NUM                  use this many concurrent connections to vacuum
复制

3.并行query、seqscan、nestloop join、aggregate

从9.6版本开始支持并行query、seqscan、nestloop join、aggregate,并行查询开启后,解析器会生成一份Gather…Partial风格的执行计划,Partial部分的计划并行执行。

postgres=# set force_parallel_mode=on;
SET

postgres=# explain (costs off,timing off,analyze on) select count(*) from test;  
                                QUERY PLAN                                
--------------------------------------------------------------------------
 Finalize Aggregate (actual rows=1 loops=1)
   ->  Gather (actual rows=3 loops=1)
         Workers Planned: 2
         Workers Launched: 2
         ->  Partial Aggregate (actual rows=1 loops=3)
               ->  Parallel Seq Scan on test (actual rows=110187 loops=3)
 Planning Time: 0.046 ms
 Execution Time: 74.961 ms
(8 rows)
复制

4.并行merge joins

从10版本开始支持。

5.并行bitmap heap scans

从10版本开始支持。

6.并行B-tree index scans

从10版本开始支持。

7.并行创建B-tree索引

从11版本开始支持并行创建B-tree索引。

postgres=# set max_parallel_maintenance_workers =4;
SET

create index concurrently(不堵塞DML)
复制

8.并行hash joins

从11版本开始支持。

postgres=# set enable_parallel_hash = on;
SET
复制

9.SQL命令支持并行重建索引

从12版本开始支持。

reindex concurrently(不堵塞DML)
复制

12版本vacuum也新增了index_cleanup控制索引与表分开回收,也可以在表上进行设置。

10.SQL命令vacuum支持并行

从13版本开始支持,当单个table有多个索引时, 可以并行vacuum索引。

postgres=# vacuum (freeze,verbose,parallel 2);
复制

11.vacuumdb命令调用vacuum时支持并行

从13版本开始支持。

$ vacuumdb --help |grep "\--parallel"
  -P, --parallel=PARALLEL_DEGREE  use this many background workers for vacuum, if available
复制

12.reindexdb支持并行

从13版本开始支持

$ reindexdb --help |grep "\--jobs"
  -j, --jobs=NUM            use this many concurrent connections to reindex
复制
最后修改时间:2020-12-24 09:01:27
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论

彭冲
暂无图片
关注
暂无图片
获得了836次点赞
暂无图片
内容获得198次评论
暂无图片
获得了851次收藏
TA的专栏
MogDB技术分享
收录164篇内容
PostgreSQL乐知乐享
收录177篇内容
目录
  • 1.并行备份恢复
  • 2.并行vacuum
  • 3.并行query、seqscan、nestloop join、aggregate
  • 4.并行merge joins
  • 5.并行bitmap heap scans
  • 6.并行B-tree index scans
  • 7.并行创建B-tree索引
  • 8.并行hash joins
  • 9.SQL命令支持并行重建索引
  • 10.SQL命令vacuum支持并行
  • 11.vacuumdb命令调用vacuum时支持并行
  • 12.reindexdb支持并行