开发者社区 问答 正文

请问下,pg作为进程的数据库,cpu配置为 2*(20C/40T),那么pg最多可以开多少个并行呢?

请问下,pg作为进程的数据库,cpu配置为 2*(20C/40T),那么pg最多可以开多少个并行呢?

max_parallel_workers_per_gather

展开
收起
茶什i 2019-10-18 16:50:49 726 分享 版权
阿里云 AI 助理回答

根据您提供的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,但具体设置还需要依据实际应用场景和压力测试的结果来最终确定。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答