linux - PostgreSQL 查询在 LINUX 服务器上执行的时间太长
问题描述
我最近将 PostgreSQL 数据库部署到 Linux 服务器,其中一个存储过程需要大约 24 到 26 秒才能获取结果。以前我将 PostgreSQL 数据库部署到 windows 服务器,相同的存储过程只需要 1 到 1.5 秒。
在这两种情况下,我都使用具有相同数据量的相同数据库进行了测试。并且两台服务器都具有相同的配置,例如 RAM、处理器等。
在 Linux 服务器中执行我的存储过程时,CPU 使用率达到 100%。
Windows 执行计划:
Linux的执行计划:
让我知道您是否有相同的解决方案。
解决方案
这也可能是因为 JIT 在 Linux 服务器而不是 Windows 中发挥作用。检查 linux 服务器上的查询执行计划是否包含有关 JIT 的信息。如果是,请检查在 windows 版本中是否相同。如果不是,那么我怀疑就是这种情况。
JIT 可能会增加更多开销,因此请尝试根据您的系统要求将 jit_above_cost、jit_inline_above_cost 等 jit 参数更改为适当的值,或者通过设置完全禁用这些参数
jit=off
或者
jit_above_cost = -1
推荐阅读
- javascript - 由 javascript 控制的 HTML 表单有时会使用 GET 提交
- python - 创建 hdf5 文件时始终出现权限错误
- flutter - FlutterEngine 导航通道 setInitialRoute 不起作用
- javascript - 如何使 npm 包作为电子应用程序的命令可用
- java - 通过 Java(使用 spring boot)插入而不是更新向 MongoDB PUT 请求。为什么会这样?
- javascript - 如何使用 water.css 在明暗模式之间切换
- python-3.x - 有人可以帮我让 python 在 Windows 10 的 CMD 中运行我的脚本,而不必每次都 cd 到确切的路径。?
- javascript - 如何使用双引号和单引号传入 JavaScript 变量 html?
- mongodb - Mongoose Average 返回 null 进行评级,如何在 mongoDB 中使用聚合器函数
- firebase - 是否存在某种将自定义参数传递给 Firebase 上的短动态链接的方法?