请问下,pg作为进程的数据库,cpu配置为 2*(20C/40T),那么pg最多可以开多少个并行呢?
max_parallel_workers_per_gather
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您提供的CPU配置,PostgreSQL数据库运行在具有2个CPU插座、每个CPU为20核/40线程的服务器上。这意味着总共有(2 \times 20 = 40)个物理核心。在考虑并行查询设置时,通常关注的是物理核心数,因为超线程(HT)虽然可以增加并发处理能力,但在资源分配上不如物理核心高效。
对于max_parallel_workers_per_gather
参数,它决定了单个查询gather操作能够使用的最大并行worker数量。根据最佳实践和性能考量,这个值应该基于物理核心数来设定,并考虑到系统整体的负载情况。一般建议不要超过物理核心数的一半,以避免过度的CPU上下文切换和资源争抢,从而确保效率。
因此,在您的场景中,尽管有40个物理核心,但为了保持系统稳定且高效,推荐将max_parallel_workers_per_gather
设置为不超过20。实际应用中,根据实际工作负载和测试结果,可能需要进一步微调这个值。同时,请确保max_parallel_workers
的总设置不超过系统能够承受的范围,考虑到其他后台进程的需求,以及避免对系统稳定性造成影响。
综上所述,针对您的硬件配置,理论上max_parallel_workers_per_gather
可以设置到一个相对较高的数值,如20,但具体设置还需要依据实际应用场景和压力测试的结果来最终确定。