PostgreSQL升级及并行查询:max_worker_processes是否含postmaster后台进程
PostgreSQL参数与并行查询升级问题解答
1. max_worker_processes是否包含postmaster进程?
答案是不包含。这个参数统计的是PostgreSQL集群里,除了核心的postmaster主进程之外的所有后台工作进程——比如负责数据刷盘的bgwriter、检查点进程checkpointer、自动清理的autovacuum worker,还有你关心的并行查询专用worker进程,都算在这个参数的限额里。postmaster作为整个集群的父进程,是独立于这个计数之外的。
2. 从9.3升级到9.6并启用并行查询,默认设置下并行查询最多能启动多少后台进程?
首先纠正前提:因为max_worker_processes不包含postmaster,所以你假设的“最多2个”的情况并不成立。具体来看PostgreSQL 9.6的默认参数配置:
max_worker_processes默认值是8:这是所有非postmaster后台进程的总上限max_parallel_workers_per_gather默认值是4:这个参数控制单条SQL查询最多能启动的并行worker数量
不过实际能用到的并行worker数还要看系统资源(比如CPU核心数)和其他后台进程的占用情况,但默认配置下,单条查询最多可以启动4个并行worker进程。如果你的业务有更高的并行需求,可以根据服务器的CPU核心数,适当调高这两个参数(比如把max_worker_processes设为CPU核心数的1.5-2倍,max_parallel_workers_per_gather设为核心数的一半左右)。
小提醒:升级到9.6后,记得先确认你的数据库实例已经开启了并行查询支持(9.6默认是开启的),同时要保证系统有足够的CPU资源来支撑并行执行,避免因为资源竞争反而降低性能。
内容的提问来源于stack exchange,提问作者user144368
相关产品推荐
相关产品推荐

