版权声明:本文为博主原创之文章,未经博主允许谢绝转载。 https://blog.csdn.net/pg_hgdb/article/details/85112930
Just-in-Time(JIT)即时编译是PostgreSQL 11版本中的新特性。使用JIT可以带来性能提升。
使用JIT安装PostgreSQL。有两种实现方式:
1)从PGDG存储库中的包中获取PostgreSQL。
2)从源代码构建PostgreSQL。
1.从PGDG存储库中的包中获取PostgreSQL
从源代码编译需要我们安装所有编译器和工具。出于各种原因,我们可能希望避免这种情况。
以下是在CentOS 7上使用JIT功能进行最低限度安装PostgreSQL的步骤:
1)安装PGDG repo并安装PostgreSQL服务器包。
如果我们不需要JIT功能,这通常是最低限度的安装:
[root@localhost ~]# yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm
[root@localhost ~]# yum install postgresql11-server
如果我们不需要JIT,可以初始化数据目录并启动服务:
[root@localhost ~]# /usr/pgsql-11/bin/postgresql*-setup initdb
[root@localhost ~]# systemctl start postgresql-11
2)安装EPEL存储库。
[root@localhost ~]# yum install epel-release
3)使用llvmjit安装PostgreSQL包。
[root@localhost ~]# yum install postgresql11-llvmjit
由于我们已经添加了EPEL存储库,现在可以通过YUM解析依赖性,它可以从EPEL中提取和安装必要的包。
2.从源代码构建PostgreSQL
1)下载PostgreSQL源码tarball并解压缩。
[root@localhost ~]# tar -zxvf postgresql-11.0.tar.gz
2)获取SCL存储库和安装工具集。
最新版本的LLVM,CLang和GCC在SCL中提供:
[root@localhost ~]# yum install centos-release-scl
[root@localhost ~]# yum install llvm-toolset-7 llvm-toolset-7-llvm-devel.x86_64
3)环境变量设置。
修改用户的环境变量:
[postgres@localhost ~]$ vim .bash_profile
添加工具的PATH:
PATH=/opt/rh/devtoolset-7/root/usr/bin/:/opt/rh/llvm-toolset-7/root/usr/bin/:$PATH
使环境变量生效:
[postgres@localhost ~]$ source .bash_profile
4)安装其他库/工具。
安装其他您需要的库或工具。例如:
[root@localhost ~]# yum install readline-devel zlib-devel libxml2-devel openssl-devel gcc
5)使用-with-llvm选项配置并make。
例如,设置PostgreSQL的安装目录为/usr/local/pgsql/pg11。
[root@localhost postgresql-11.0]# ./configure --prefix=/usr/local/pgsql/pg11 --with-openssl --with-libxml --with-zlib --with-llvm
[root@localhost postgresql-11.0]# make
[root@localhost postgresql-11.0]# make install
这样安装完毕后,PostgreSQL就带有了JIT功能。
默认情况下,PostgreSQL 11中禁用了JIT功能。
postgres=# SHOW jit;
jit
-----
off
(1 row)
启用jit:
postgres=# ALTER SYSTEM SET jit=on;
ALTER SYSTEM
postgres=# SELECT pg_reload_conf();
pg_reload_conf
----------------
t
(1 row)
postgres=# SHOW jit;
jit
-----
on
(1 row)
By Kalath