千家信息网

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

发表于:2024-10-02 作者:千家信息网编辑
千家信息网最后更新 2024年10月02日,这篇文章主要讲解了"PostgreSQL并行计算算法及参数强制并行度怎么设置",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"PostgreSQL并行计算
千家信息网最后更新 2024年10月02日PostgreSQL并行计算算法及参数强制并行度怎么设置

这篇文章主要讲解了"PostgreSQL并行计算算法及参数强制并行度怎么设置",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"PostgreSQL并行计算算法及参数强制并行度怎么设置"吧!

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

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并行计算算法及参数强制并行度怎么设置这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

参数 强制 成本 算法 索引 函数 大小 分区表 学习 选择 内容 单个 方法 最低 最大 主动 取决于 同时 因子 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 邢台软件开发计算机培训学校 盐城软件开发培训机构 各个软件开发者模式进入 浦东新区网络软件开发定制报价表 山西大数据网络技术咨询哪个正规 共享服务器能连多少个电视 将文件写入文件服务器失败 广安市网络安全教育平台 交通监控管理服务器价格多少 软件开发23模式 数据库使用连接池需要关闭连接吗 截流法数据库 联想服务器拆 微信裂变软件开发原理 娄底职业技术学院计算机网络技术 数据库开启归档 rdp数据库可以在线使用吗 河北综合软件开发制造价格 物联网行业实训仿真服务器 服务器设置共享文件夹 安卓软件开发项目文档模板 奉贤区创新数据库服务销售价格 mc服务器图形化管理器 网络安全辩论赛总结 魔兽世界联盟哪个服务器最多人 云服务器能做plc c3p0连接不上数据库 初中生网络安全主题班会教案 贵阳纵横网络技术 电脑网络安全科技馆南宁
0