PostgreSQL并行计算算法及参数强制并行度设置方法


Posted in PostgreSQL onApril 07, 2022

一、优化器并行计算的并行度计算方法

1、总worker进程数

postgres=# show  ;      
 max_worker_processes     
----------------------    
 128    
(1 row)

2、所有会话,在同一时刻的QUERY,并行计算最大允许开启的WORKER数。

max_parallel_workers

3、单条QUERY中,每个node最多允许开启的并行计算WORKER数

postgres=# show max_parallel_workers_per_gather ;    
 max_parallel_workers_per_gather     
---------------------------------    
 0    
(1 row)

4、单个query, node的并行度

Min(parallel_workers(表级设置,没有设置则,根据表大小计算得到), max_parallel_workers_per_gather)

5、表级并行度参数,默认不设置,从表大小计算。

postgres=# alter table pa set (parallel_workers =32);    
ALTER TABLE

6、真实并行度算法

min (max_worker_processes - 已运行workers ,     
     max_parallel_workers - 其他会话当前真实启用的并行度 ,      
     Min(parallel_workers(表级设置,没有设置则,根据表大小计算得到), max_parallel_workers_per_gather)     
)

二、优化器是否选择并行计算

优化器是否使用并行计算,取决于CBO,选择成本最低的方法,并行计算成本估算,成本因子参数如下:

postgres=# show parallel_tuple_cost ;    
 parallel_tuple_cost     
---------------------    
 0    
(1 row)    
postgres=# show parallel_setup_cost ;    
 parallel_setup_cost     
---------------------    
 0    
(1 row)

如果非并行计算的执行计划成本低于并行计算的成本,则不使用并行计算。

三、优化器是否忽略并行计算

如果表扫描或索引扫描的表或索引低于设置的阈值,这个表扫描或索引扫描则不启用并行计算。

postgres=# show min_parallel_table_scan_size ;    
 min_parallel_table_scan_size     
------------------------------    
 0    
(1 row)    
postgres=# show min_parallel_index_scan_size ;    
 min_parallel_index_scan_size     
------------------------------    
 0    
(1 row)

四、优化器强制选择并行计算参数

#force_parallel_mode = on

五、并行计算相关参数

1、创建索引,CREATE TABLE AS,SELECT INTO 的并行度

postgres=# show max_parallel_maintenance_workers ;    
 max_parallel_maintenance_workers     
----------------------------------    
 24    
(1 row)

2、并行分区表JOIN

#enable_partitionwise_join = on

3、并行分区表分区聚合

#enable_partitionwise_aggregate = on

4、并行HASH计算

#enable_parallel_hash = on

5、LEADER主动获取并行WORKER的返回结果

parallel_leader_participation = on

6、并行APPEND(分区表),UNION ALL查询

#enable_parallel_append = on

六、强行并行

强制并行度24

1、总的可开启的WORKER足够大  
postgres=# show max_worker_processes ;  
 max_worker_processes   
----------------------  
 128  
(1 row)  
  
2、所有会话同时执行并行计算的并行度足够大  
postgres=# set max_parallel_workers=64;  
SET  
3、单个QUERY中并行计算NODE开启的WORKER=24  
postgres=# set max_parallel_workers_per_gather =24;  
4、所有表和索引扫描允许并行  
postgres=# set min_parallel_table_scan_size =0;  
postgres=# set min_parallel_index_scan_size =0;  
5、并行计算优化器成本设置为0  
postgres=# set parallel_tuple_cost =0;  
postgres=# set parallel_setup_cost =0;  
6、设置表级并行度为24  
postgres=# alter table pa set (parallel_workers =24);  
ALTER TABLE  
7、效果,强制24并行。  
postgres=# explain (analyze) select count(*) from pa;  
                                                             QUERY PLAN                                                                
-------------------------------------------------------------------------------------------------------------------------------------  
 Finalize Aggregate  (cost=1615.89..1615.89 rows=1 width=8) (actual time=81.711..81.711 rows=1 loops=1)  
   ->  Gather  (cost=1615.83..1615.83 rows=24 width=8) (actual time=81.572..90.278 rows=25 loops=1)  
         Workers Planned: 24  
         Workers Launched: 24  
         ->  Partial Aggregate  (cost=1615.83..1615.83 rows=1 width=8) (actual time=58.411..58.411 rows=1 loops=25)  
               ->  Parallel Seq Scan on pa  (cost=0.00..712.71 rows=416667 width=0) (actual time=0.012..35.428 rows=400000 loops=25)  
 Planning Time: 0.449 ms  
 Execution Time: 90.335 ms  
(8 rows)

七、函数并行

1、并行函数

create or replace function ftest(int) returns boolean as $$    
  select $1<1000;    
$$ language sql strict    
parallel safe;    
    
-- parallel safe 语法

2、并行聚合函数

combinefunc

到此这篇关于PostgreSQL 并行计算算法,参数,强制并行度设置的文章就介绍到这了,更多相关PostgreSQL 并行计算算法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PostgreSQL 相关文章推荐
PostgreSQL将数据加载到buffer cache中操作方法
Apr 16 PostgreSQL
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
May 21 PostgreSQL
postgresql使用filter进行多维度聚合的解决方法
Jul 16 PostgreSQL
PostgreSQL自动更新时间戳实例代码
Nov 27 PostgreSQL
Oracle配置dblink访问PostgreSQL的操作方法
Mar 21 PostgreSQL
PostgreSQL并行计算算法及参数强制并行度设置方法
Apr 06 PostgreSQL
PostgreSQL并行计算算法及参数强制并行度设置方法
Apr 07 PostgreSQL
PostgreSQL数据库去除重复数据和运算符的基本查询操作
Apr 12 PostgreSQL
postgreSQL数据库基础知识介绍
Apr 12 PostgreSQL
PostgreSQL怎么创建分区表详解
Jun 25 PostgreSQL
postgresql之greenplum字符串去重拼接方式
May 08 PostgreSQL
PostgreSQL并行计算算法及参数强制并行度设置方法
Apr 06 #PostgreSQL
PostgreSQL事务回卷实战案例详析
Mar 25 #PostgreSQL
Oracle配置dblink访问PostgreSQL的操作方法
Rust 连接 PostgreSQL 数据库的详细过程
Jan 22 #PostgreSQL
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
PostGIS的安装与入门使用指南
PostgreSQL13基于流复制搭建后备服务器的方法
You might like
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
php switch语句多个值匹配同一代码块的实现
2014/03/03 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
PHP获取文件夹内文件数的方法
2015/03/12 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
js 异步操作回调函数如何控制执行顺序
2013/12/24 Javascript
javascript实现日期格式转换
2014/12/16 Javascript
Javascript通过overflow控制列表闭合与展开的方法
2015/05/15 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
2015/10/28 Javascript
浅谈js基本数据类型和typeof
2016/08/09 Javascript
JavaScript 链式结构序列化详解
2016/09/30 Javascript
BootStrap Datetimepicker 汉化的实现代码
2017/02/10 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
详解Javascript获取缓存和清除缓存API
2017/05/25 Javascript
angular内置provider之$compileProvider详解
2017/09/27 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
2017/11/27 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
用Python写一个for循环的例子
2016/07/19 面试题
高中毕业生生活的自我评价
2013/12/08 职场文书
捐书寄语赠言
2014/01/18 职场文书
年度考核自我评价
2014/01/25 职场文书
法制宣传月活动总结
2014/04/29 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
2014年保卫部工作总结
2014/11/21 职场文书
2014年大学教师工作总结
2014/12/02 职场文书