PG的编译一如既往的简单,llvm因为不熟悉稍微绕了点弯路。
1、OS:Redhat 7.4 最小安装
2、安装所需软件包
gcc、gcc-c++、nasm、make
3、cmake
官网下载,不要使用OS自带的,版本过低llvm不支持,下载一个binary版解压后设置PATH即可。
4、其他
例如 readline、zlib 等等,自行处理
5、编译llvm(当前版本6.0.1)
下载LLVM CLang源代码包(没有使用其他可选件)
首先解压LLVM至某个目录 $llvm-src,然后将CLang源代码解压至 $llvm-src/tools/并将其目录名改为clang
在自行选定的编译位置 mkdir build && cd build
然后 cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release $llvm-src
随后就是简单的 make && make install
这里如果不指定 Release,默认会以Debug方式编译,对生产环境来说是不必要的。
编译过程很长,耐心等待,可以给make加 -j参数
6、使用 --with-llvm 参数运行 configure 并且编译安装PG
7、测试一下,使用官方文档的例子
flying=# SET jit_above_cost = 10;
SET
flying=# EXPLAIN ANALYZE SELECT SUM(relpages) FROM pg_class;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------
Aggregate (cost=16.27..16.29 rows=1 width=8) (actual time=16.175..16.178 rows=1 loops=1)
-> Seq Scan on pg_class (cost=0.00..15.42 rows=342 width=4) (actual time=0.024..0.179 rows=342 loops=1)
Planning Time: 0.924 ms
JIT:
Functions: 3
Generation Time: 1.448 ms
Inlining: false
Inlining Time: 0.000 ms
Optimization: false
Optimization Time: 0.928 ms
Emission Time: 14.639 ms
Execution Time: 39.454 ms
(12 rows)
flying=#
飞象数据
权叔与你同在