PostgreSQL并行计算
程序员文章站
2022-07-12 19:53:30
...
PostgreSQL从9.6开始支持并行计算,到现在的pg12已经较为成熟,能够支持很多场合的,目前大约已支持几十种场景的并行计算。
不过大部分情况下很多查询使用并行并不能带来性能的提升,甚至会更差,因为优化器计算成本时更多的并行意味着更大的cpu run cost,如果非并行计算的执行计划成本低于并行计算的成本,则不使用并行计算。所以一般只有那些访问大量数据但只返回其中少数行的查询最能从并行查询中获益。
想要使用并行计算,首先得配置相关参数:
- max_parallel_workers_per_gather 必须被设置为大于零的值
- dynamic_shared_memory_type必须被设置为除none之外的值。
除此之外,还有很多并行计算相关的参数,下面简单介绍:
优化器并行计算的并行度计算方法
–总work进程数
bill=# show max_worker_processes;
max_worker_processes
----------------------
8
(1 row)
–所有会话同一时刻,并行计算最大允许开启的WORKER数
bill=# show max_parallel_workers;
max_parallel_workers
----------------------
8
(1 row)
–单条查询,每个节点最多允许开启的WORKER数
bill=# show max_parallel_workers_per_gather;
max_parallel_workers_per_gather
---------------------------------
2
(1 row)
–表并行度参数,默认不设置,从表大小计算
bill=# alter table test set (parallel_workers =32);
ALTER TABLE
–真实并行度计算
min (max_worker_processes - 已运行workers ,
max_parallel_workers - 其他会话当前真实启用的并行度 ,
Min(parallel_workers(表级设置,没有设置则,根据表大小计算得到), max_parallel_workers_per_gather
)
强制选择并行计算参数
bill=# set force_parallel_mode =on;
SET
例子:
bill=# explain select count(*) from test;
QUERY PLAN
---------------------------------------------------------------------------------------
Finalize Aggregate (cost=11614.55..11614.56 rows=1 width=8)
-> Gather (cost=11614.33..11614.54 rows=2 width=8)
Workers Planned: 2
-> Partial Aggregate (cost=10614.33..10614.34 rows=1 width=8)
-> Parallel Seq Scan on test (cost=0.00..9572.67 rows=416667 width=0)
(5 rows)
上一篇: Activity之理解Tasks和Back Stack
下一篇: 有关加密的那些事儿
推荐阅读
-
PostgreSQL 正则表达式 常用函数的总结
-
PHP操作Postgresql封装类与应用完整实例
-
《OdooERP应用与开发案例教程》试读:第二章-PostgreSQL概述
-
PostgreSQL 常用函数
-
详解Linux中PostgreSQL和PostGIS的安装和使用
-
PostgreSQL10版本中的自增列代码实例分析
-
在 Linux 上安装 PostgreSQL
-
Navicat怎么连接PostgreSQL数据库?Navicat Premium新建连接PostgreSQL数据库教程
-
在mybatis和PostgreSQL Json字段作为查询条件的解决方案
-
Nodejs对postgresql基本操作的封装方法