PostgreSQL 11 新特性解读: 增加对JIT(just

  • 时间:
  • 浏览:1

解压安装包并重命名,目录型态对应如下,如下:

LLVM 安装依赖较多,如下:

LLVM 的安装步骤较繁琐,因此 编译安装过程时间较长,性能好的机器能减少编译时间,注意操作系统需启用 swap,因此 编译过程中会报错,被委托人开始编译安装时越来越启用 swap,折腾了后要。

开启 JIT,执行计划如下:

下载并编译安装 cmake 3.12.3,如下:

解压 llvm-5.0.2.src.tar.xz

至此 LLVM 已安装成功。

使用 initdb 初始化数据库,如下:

使用 JIT 才能 在首先编译安装 LLVM ,后要编译安装 PostgreSQL 时设置 --with-llvm 选项,本文主要包括两偏离 ,如下:

关闭 JIT,查看执行计划和扫行时间,如下:

LLVM 官网的其它安装包非才能 ,可根据具体情况选则。

操作系统: CentOS Linux release 7.4.1708 (Core)

硬件环境: 8核4G/1000G 的云主机

下载PostgreSQL 11 并编译安装,编译时指定 --with-llvm 选项, 如下:

最后推荐和张文升一起编写的《PostgreSQL实战》,本书基于PostgreSQL 10 编写,共18章,重点介绍SQL高级型态、并行查询、分区表、物理群克隆、逻辑群克隆、备份恢复、高可用、性能优化、PostGIS等,涵盖少许实战用例!

设置环境变量,如下:

购买链接:https://item.jd.com/12405774.html

安装相关包,如下:

设置 .bash_profile ,如下:

创建一张5千万的数据表,如下:

设置 pg_hba.conf,如下:

以下大致演示 JIT,测试样例很简单,不做充分的性能测试,有兴趣的大家能必须做 TPC-H 性能测试。

编译安装 LLVM,如下:

后要启动数据库,如下:

postgresql.conf 设置以下 JIT 配置参数,其它参数按需配置,这里不贴出,如下:

PostgreSQL 11 版本的另1个重量级新型态是引入了 JIT (Just-in-Time) 编译来加速SQL中的表达式计算强度。

LLVM官网下载安装介质,如下:

Add Just-in-Time (JIT) compilation of some parts of query plans to improve execution speed (Andres Freund)

JIT 常用于CPU密集型SQL(分析统计SQL),执行加快强度的SQL使用JIT机会产生一定开销,反而机会引起性能下降。

从以上看出执行计划中涵盖 JIT 编译信息,执行时间为 2154 ms 左右。

This feature requires LLVM to be available. It is not currently enabled by default, even in builds that support it.

下载并编译安装 python 2.7.9,如下:

JIT 表达式的编译使用LLVM项目编译器的架构来提升在WHERE条件、指定列表、聚合以及这种内控 操作表达式的编译执行。

查看版本

从以上看出执行计划中越来越涵盖 JIT 信息,执行时间为 2385 ms 左右,开启JIT性能提升了9.7% 左右。