该功能依赖于 LLVM for JIT 来编译 SQL 查询,通过利用 LLVM 的即时编译技术,而不是通过 PostgreSQL 的解释器来传递 SQL 查询,从而在 PostgreSQL 中通过 JIT 编译 SQL 查询,这可以更多地使用运行时信息,并且特别有助于提升复杂 SQL 查询的性能,从而生成更高效的代码。 PostgreSQL JIT 在某些数据库基准测试中显示速度可提升 20%,最新 TPC-H Q1 测试显示 PostgreSQL JIT 带来了 30% 的性能提升,而像创建索引这样的基本任务则提升 5~19%。 PostgreSQL 11 还在开发中,已经在向正式版靠近了,当前最新的版本是 PostgreSQL 11 Beta 2。到目前为止,PostgreSQL 11 默认情况下已启用 JIT 功能,但据最新消息,开发者目前已决定默认禁用它,以在下一次主要的稳定更新中再次默认启用。 之所以做出这个决定,是因为他们担心 JIT 后端会引入一些回归错误,而且现在还不够成熟,所以不会默认启用该功能。但在开发版的 Git 代码中,他们会继续保留这些代码,并为其进行额外的测试,希望在 PostgreSQL 12 中可默认启用该功能。 这个决定是本周末确定下来的,关于这个决定的更多细节,请查看 PostgreSQL 项目的邮件列表。 |