【问题标题】:Different execution plan in windows and Linux for PostgreSQLPostgreSQL 在 windows 和 Linux 中的不同执行计划
【发布时间】:2020-05-17 19:22:31
【问题描述】:

我最近在 Linux 服务器上部署了 PostgreSQL 数据库。 其中一个存储过程需要大约 3 到 4 秒来获取结果。以前我将 PostgreSQL 数据库部署到 windows 服务器,并且相同的存储过程在第二个内获取结果。在这两种情况下,我都检查了执行计划。
几乎相同,但 Linux 执行计划包含以下额外细节。

    JIT:
  Functions: 171
  Options: Inlining true, Optimization true, Expressions true, Deforming true
  Timing: Generation 26.548 ms, Inlining 8.198 ms, Optimization 2052.958 ms, Emission 1241.730 ms, Total 3329.434 ms

如果您对上述细节有任何想法并且有任何导致缓慢问题的根本原因,请告诉我。

【问题讨论】:

  • 网络是否完全一样,或者您在服务器上运行查询?
  • 两者都运行在同一个数据中心的不同服务器上。
  • 可能有很多东西(机器规格、磁盘速度、postgres 版本、配置等),但在这种情况下,根据你问题中的“JIT:”,我猜@987654321 @ 在 linux 机器上启用,而不是在 windows 上。
  • 尝试在 Linux 系统上禁用 JIT

标签: postgresql query-performance sql-execution-plan postgresql-12


【解决方案1】:

看起来 JIT 在 Linux 上弊大于利,所以请关闭它,例如将 jit=off 放在 postgresql.conf 文件中。

您的 Windows 版本可能一开始就没有附带 JIT。无论如何,Windows 的 EnterpriseDB 安装程序不包括它。因此,即使参数jit 显示为on,它也不会做任何事情,因为没有任何东西可以打开。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多