PG 并行查询相关参数
1)max_worker_processes
设置系统能够支持的后台进程的最大数量。这个参数只能在服务器启动时设置。默认值 为 8。
如果有备库,备库上此参数必须 >= 主库上此参数的配置值
2)max_parallel_workers
设置系统支持的并行查询进程数。默认值为8
3)max_parallel_workers_per_gather
设置允许启用的并行进程的进程数。默认值为2,0表示禁用并行查询
max_worker_processes > max_parallel_workers > max_parallel_workers_per_gather
4)parallel_setup_cost
设置规划器对启动并行工作者进程的代价估计。默认是 1000。
5)parallel_tuple_cost
设置规划器通过并行进程处理一行数据的代价。默认是 0.1。
6)min_parallel_table_scan_size
设置开启并行的条件之一,表占用空间小于此值将不会开启并行。 对于并行顺序扫描,被扫描的表数据量总是等于表的尺寸,但是在使用索引时,被扫描的表数据量通常会更小。 如果指定值时没有单位,则以块为单位, 即BLCKSZ字节,通常为8kB。默认值是8兆字节(8MB)。
7)min_parallel_index_scan_size
为必须扫描的索引数据量设置一个最小值,扫描的索引数据量超过这一个值时才会考虑使用并行扫描。 注意并行索引扫描通常并不会触及整个索引,它是规划器认为该扫描会 实际用到的相关页面的数量。 如果指定值时没有单位,则以块为单位,即BLCKSZ字节, 通常为8kB。默认值是512千字节(512kB)。
8)force_parallel_mode
强制开启并行。允许为测试目的使用并行查询,即便是并不期望在性能上得到效 益。
force_parallel_mode的允许值:
- off - 只在期望改进性能时才使用并行模式;
- on - 只要查询被认为是安全的,就强制使用并行查询;
- regress - 和on相似, 但是有如下文所解释的额外行为改变。
9)max_parallel_maintenance_workers
设置单一工具性命令能够启动的并行工作者的最大数目。
并行查询进程预估值由参数max_parallel_workers_per_gather控制,并行进程数预估值是指优化器解析 SQL 时执行计划预计会启用的并行进程数,而实际执行查询时的并行进程数受参数 max_parallel_ workers、max_worker_processes 的限制,也就是说 SQL 实际获得的并行进程数不会超过这两个参数设置的值,比如 max_worker_processes 参数设置成 2, max_parallel_ workers _per _gather 参数设置成4,不考虑其他因素的情况下,并行查询实际的并行进程数将会是2;另一方面并行进程数会受 min_parallel_table_scan_size 参数的影响,即表的大小会影响并行进程数。
并行查询执行计划中的 Workers Planned 表示执行计划预估的并行进程数,Worker Launched 表示并行查询实际获得的并行进程数




