PostgreSQL windows 和 Linux 中的不同执行计划
Different execution plan in windows and Linux for PostgreSQL
我最近在 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
如果您对上述细节有任何想法并且有任何缓慢问题的根本原因,请告诉我。
看起来 JIT 在 Linux 上给你带来的弊大于利,所以关闭它,例如将 jit=off
放入 postgresql.conf 文件。
您的 Windows 版本可能一开始就没有附带 JIT。无论如何,Windows 的 EnterpriseDB 安装程序没有包含它。因此,即使参数 jit
显示为 on
,它也不会执行任何操作,因为没有任何东西可以打开。
我最近在 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
如果您对上述细节有任何想法并且有任何缓慢问题的根本原因,请告诉我。
看起来 JIT 在 Linux 上给你带来的弊大于利,所以关闭它,例如将 jit=off
放入 postgresql.conf 文件。
您的 Windows 版本可能一开始就没有附带 JIT。无论如何,Windows 的 EnterpriseDB 安装程序没有包含它。因此,即使参数 jit
显示为 on
,它也不会执行任何操作,因为没有任何东西可以打开。