澳门新葡亰信誉平台游戏可惜!PostgreSQL 11 将不会默认启用更快的 JIT 支持

by admin on 2020年3月19日

PostgreSQL 今年最酷最创新的一个特性就是基于 LLVM 的 JIT 支持 ——
可用于加速数据库查询。但据最新消息,在即将发布的 PostgreSQL 11
版本中,默认情况下不会启用该特性。

一直进行中的在 PostgreSQL 后端应用 LLVM JIT
技术目前被发现已有一个相关的提交信息。相信在不久的将来,被广泛使用的
PostgreSQL 数据库将会变得更快!

PostgreSQL 11
正式版很快就能和我们见面了,该版本有一个和性能提升相关的重要特性 —— 对
JIT(just-in-time) 编译的支持。今年3月份我们曾报道过,在 TPC-H
等数据库测试中,发现用于 PostgreSQL 的 JIT 编译表达式速度快了不止
20%。在这种 JIT 模式下,创建索引的速度甚至可以提高 5~19%。

该功能依赖于 LLVM for JIT 来编译 SQL 查询,通过利用 LLVM
的即时编译技术,而不是通过 PostgreSQL 的解释器来传递 SQL 查询,从而在
PostgreSQL 中通过 JIT 编译 SQL
查询,这可以更多地使用运行时信息,并且特别有助于提升复杂 SQL
查询的性能,从而生成更高效的代码。

通过利用 LLVM 的即时编译技术,而不是通过 Postgres 的解释器传递 SQL
查询,从而在 PostgreSQL 中通过 JIT 编译 SQL
查询,这可以更多地使用运行时信息,并且特别有助于提高复杂 SQL
查询的性能,从而生成更高效的代码。

与此同时,数据库初创公司 Citus Data 也对 PostgreSQL 11 进行了一次 TPC-H
基准测试,而这次的测试结果显示性能又有了更高的提升。TPC-H 基准测试中的
Q1 查询十分适合用于测量新执行器堆栈在最佳状态下的表现,Citus Data
在本次测试中也使用了该查询。

PostgreSQL JIT 在某些数据库基准测试中显示速度可提升 20%,最新 TPC-H Q1
测试显示 PostgreSQL JIT 带来了 30%
的性能提升,而像创建索引这样的基本任务则提升 5~19%。

在 TPC-H 等数据库测试中,发现用于 PostgreSQL 的 JIT
编译表达式速度快了不止 20%。在这种 JIT
模式下,创建索引的速度甚至可以提高
5~19%。总体而言,这是相当激奋人心的提升。

关于 TPC-H 基准测试的规范请查看 TPC Benchmark™
H 的
137 页。规范中的每个查询都带有一个商业问题,Q1 查询的问题用 SQL
描述如下所示:

PostgreSQL 11
还在开发中,已经在向正式版靠近了,当前最新的版本是 PostgreSQL 11 Beta
2。到目前为止,PostgreSQL 11 默认情况下已启用 JIT 功能,

PostgreSQL
使用抽象层来让共享库提供即时功能,因此在将来,也许我们也会看到 GCC
实验性 JIT 的支持。目前这项工作主要集中在 LLVM JIT 上。

select
    l_returnflag,
    l_linestatus,    sum(l_quantity) as sum_qty,    sum(l_extendedprice) as sum_base_price,    sum(l_extendedprice * (1 - l_discount)) as sum_disc_price,    sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) as sum_charge,    avg(l_quantity) as avg_qty,    avg(l_extendedprice) as avg_price,    avg(l_discount) as avg_disc,    count(*) as count_orderfrom
    lineitemwhere
    l_shipdate <= date '1998-12-01' - interval ':1' daygroup by
    l_returnflag,
    l_linestatusorder by
    l_returnflag,
    l_linestatus
:n -1;

之所以做出这个决定,是因为他们担心 JIT
后端会引入一些回归错误,而且现在还不够成熟,所以不会默认启用该功能。但在开发版的
Git 代码中,他们会继续保留这些代码,并为其进行额外的测试,希望在
PostgreSQL 12 中可默认启用该功能。

虽然到目前为止只有一个关于这个特性的提交,但相信开发团队会兑现当初的承诺。PostgreSQL
11 肯定会让人更兴奋!

最后的测试结果显示,PostgreSQL 11 在执行 TPCH Q1 查询时比 PostgreSQL 10
快 29.31%。当在循环中运行查询 10 分钟时,PostgreSQL 11 可执行 30 次,而
PostgreSQL 10 只能执行相同的查询 21 次。

这个决定是本周末确定下来的,关于这个决定的更多细节,请查看
PostgreSQL
项目的邮件列表。

原文:https://www.phoronix.com 编译:开源中国

澳门新葡亰信誉平台游戏 1

(文/开源中国)    

在 PostgreSQL 11 中,由于在查询方案中(query planning time)使用了 LLVM
编译器基础结构,SQL
表达式会被转换为机器代码,这大大提升了查询方面的性能。对于那些足够昂贵的查询、那些进行大量编译行并一遍又一遍地评估表达式的查询,其带来的好处不言而喻。

关于测试的详细内容请点此查看。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图