主要观点:作者介绍了将 copy-and-patch 技术引入 PostgreSQL 的 JIT 引擎,探讨了不同 JIT 编译器的优缺点,展示了当前状态下的性能测试结果,并提及后续的计划和感谢。
关键信息:
- 几年前 PostgreSQL 引入了 LLVM JIT 编译器,但存在开销大等问题,缓存和复用编译查询的方式实现较难。
- copy-and-patch 技术通过编写 C 模板,拼接模板并填充漏洞来生成代码,速度快。
- 在 PostgreSQL 中实现新 JIT 引擎接口简单,作者用其实现了基本功能,目前仅支持 AMD64,后续将添加其他架构支持。
- 性能测试表明,即使在当前未优化状态下,对于有 CPU 工作的查询,JIT 也能使性能提升几个百分点。
- 目前只是概念验证,未注重构建和打包,作者希望能在生产服务器上部署,也计划将其移植到其他架构。
重要细节: - 代码位于github,构建前需先运行 build-stencils.sh 文件,目前不提供支持。
- 性能测试在笔记本上进行,结果仅供参考,后续将在台式机上进行正式测试。
- 作者感谢当前雇主 Entr’ouvert 以及 DBA 朋友的支持,还提到了 PoWA 工具。对于是否参加 PGConf.dev 表示因时间和地域原因可能不会去,若认为重要可留言或发邮件。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。