首页 > 其他分享 >PG--并行

PG--并行

时间:2022-10-04 10:34:48浏览次数:39  
标签:-- max workers 并行 leader PG worker parallel

postgres=# select name ,setting from pg_settings where name like '%parallel%';
name | setting
----------------------------------+---------
enable_parallel_append | on
enable_parallel_hash | on
force_parallel_mode | off
max_parallel_maintenance_workers | 2
max_parallel_workers | 8
max_parallel_workers_per_gather | 2
min_parallel_index_scan_size | 64 并行扫描的最小索引大小
min_parallel_table_scan_size | 1024 并行扫描的最小表大小
parallel_leader_participation | on
parallel_setup_cost | 1000 并行启动的代价
parallel_tuple_cost | 0.1 表示每个tuple从worker传递给leader的代价,worker
将一个tuple放入共享内存队列DSM,然后leader从中读取的代价。

max_parallel_workers

设置系统支持的并行查询进程数。不过得小于max_worker_processes的值,因为并行worker是从该max_worker_processes建立的worker进程池中获取的。

max_parallel_workers_per_gather

控制一个并行的EXEC NODE最多能开启多少个并行worker,也就是单个Gather节点的并行度。受到max_worker_processes和max_parallel_workers的限制,同时需要注意,在OLTP业务系统中,不要设置太大,因为每个worker都会消耗同等的work_mem等资源,因为每个散列连接或排序操作都需要一个work_mem内存量,可能不仅仅是查询:work_mem * processes * joins。建议在OLAP中使用并行,并且做好任务调度,减轻冲突。


max_parallel_maintenance_workers

指定在CREATE INDEX(目前只支持BTREE),CREATE TABLE AS,SELECT INTO 的并行数量,我们可以在create index的时候指定该参数的数量,默认是2,在合适的时候(比如表足够大)就会使用两个工作进程来创建索引,但需要配合maintenance_work_mem参数,可以有效提升创建索引的速度。


parallel_leader_participation

是一个 GUC 参数,用户可以显式控制是否需要 leader 参与子计划的执行,默认为on。


min_parallel_index_scan_size

是使用并行扫描的最小  表大小


min_parallel_table_scan_size

是使用并行扫描的最小  索引大小


parallel_workers

是一个表级的参数,和fillfactor等类似,很容易被忽略,该参数表示表级并行度,指定对表扫描可以启用的工作进程数,默认不设置,依据表的大小计算出一个值,

alter table test set (parallel_workers =32);


force_parallel_mode

表示强制开启并行,可以用来模仿Oracle的Hint。

set force_parallel_mode to on;



不支持并行查询场景

1.任何写数据或者锁行的查询均不支持并行,CREATE TABLE ... AS,SELECT INTO,和CREATE MATERIALIZED VIEW等创建新表的命令可以并行

2.包含 CTE语句的查询不支持并行

3.DECLARE CURSOR 不支持并行

4.包含PARALLEL UNSAFE函数的查询不支持并行

5.事务隔离级别为serializable时不支持并行

标签:--,max,workers,并行,leader,PG,worker,parallel
From: https://blog.51cto.com/u_13874232/5731095

相关文章

  • androidmanifest.xml 反编译
    androidmanifest.xml反编译去除更新只修改androidmanifest.xml内容解压apk文件后得到这个文件androidmanifest.xmlwindwos安装java环境官网java环境安装安装好后......
  • vue面试之Composition-API响应式包装对象原理
    本文主要分以下两个部分对CompositionAPI的原理进行解读:reactiveAPI原理refAPI原理reactiveAPI原理打开源码可以找到reactive的入口,在composition-api/src/r......
  • 202209_2
    CSP202209_2目录CSP202209_2题目思路DFSDPCode题目何以包邮思路DFS直接DFS,对每件物品根据选与不选进行搜索。当前总价值已经大于答案或者已经满足条件了就显然没有搜......
  • Python代码调试方法
    对于每个程序开发者来说,调试几乎是必备技能。常用Pycharm编辑器里的方法有Print大法、log大法,但缺少类似Matlab的变量区,给代码调试带来不便,特别是在有函数的情况下,变量无法......
  • <resultMap >继承 解决 Mybatis 统计类查询需求
    在使用Mybatis过程中,有需要通过SQL直接计数或求和的需求,需要自定义<resultMap>,而这些<resultMap>往往会与数据库映射直接生成的<resultMap>有关联,会用到resultMap继承,这......
  • 基于Matlab GUI的PID研究
    前言:偷懒了一段时间,最近计划分享一些之前做过的项目,本期分享基于MatlabGUI的PID研究。本例子中设计一个PID控制器来研究不同参数对输出结果的影响,PID控制器由比例单元 P、......
  • 前端程序员学习 Golang gin 框架实战笔记之一开始玩 gin
    原文链接我是一名五六年经验的前端程序员,现在准备学习一下Golang的后端框架gin。以下是我的学习实战经验,记录下来,供大家参考。https://github.com/gin-gonic/gin1.......
  • 回文串-336. 回文对
    问题描述给定一组互不相同的单词,找出所有不同 的索引对(i,j),使得列表中的两个单词, words[i]+words[j] ,可拼接成回文串。示例1:输入:words=["abcd","dcba","......
  • 传奇服务端界面不显示等级的解决方法
    1问题简述CEE传奇版本下载之后,偶尔会遇到架好之后发现主界面等级不显示,如上图所示,UI界面等级2个字后面没有级别显示,以下和大家讲解一下解决的方法。。。2.解决办法1、我们打......
  • Rust从入门到精通08-字符串
    Rust字符串相对于其它语言有点复杂,主要是跟所有权有关。Rust字符串涉及两种类型:&str和String1、&str-字面量str是Rust的内置类型,&str是str的借用。可以理解为字符......