首页 > 解决方案 > PostgreSQL 查询在 LINUX 服务器上执行的时间太长

问题描述

我最近将 PostgreSQL 数据库部署到 Linux 服务器,其中一个存储过程需要大约 24 到 26 秒才能获取结果。以前我将 PostgreSQL 数据库部署到 windows 服务器,相同的存储过程只需要 1 到 1.5 秒。

在这两种情况下,我都使用具有相同数据量的相同数据库进行了测试。并且两台服务器都具有相同的配置,例如 RAM、处理器等。

在 Linux 服务器中执行我的存储过程时,CPU 使用率达到 100%。

Windows 执行计划:

**在此处输入图片描述**

Linux的执行计划:

在此处输入图像描述

让我知道您是否有相同的解决方案。

标签: linuxpostgresql.net-corepostgresql-12

解决方案


这也可能是因为 JIT 在 Linux 服务器而不是 Windows 中发挥作用。检查 linux 服务器上的查询执行计划是否包含有关 JIT 的信息。如果是,请检查在 windows 版本中是否相同。如果不是,那么我怀疑就是这种情况。

JIT 可能会增加更多开销,因此请尝试根据您的系统要求将 jit_above_cost、jit_inline_above_cost 等 jit 参数更改为适当的值,或者通过设置完全禁用这些参数

jit=off

或者

jit_above_cost = -1

推荐阅读