| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
原始链接: https://news.ycombinator.com/item?id=39742916
本文讨论了提高 PostgreSQL 数据库中 LLVM 即时 (JIT) 编译器可用性的挑战。 目前,为每个查询生成自定义代码的过程会因重复编译而导致性能问题,并降低多个连接之间共享资源的能力。 虽然 LLVM 支持缓存和重用已编译的查询,但主要问题在于 PostgreSQL 本身。 具体来说,它与 PostgreSQL JIT 编译器的实现有关,该编译器需要注入直接内存地址,导致生成的代码特定于每个唯一的查询和进程。 作为解决方案,作者建议研究如何将 PostgreSQL 转换为与 Microsoft SQL Server (MSSQL) 或 Oracle 类似的行为,从而允许共享内存和多线程架构,从而实现 LLVM JIT 编译器的高效使用。 此外,作者还分享了在以前的系统中处理查询性能的个人经验,包括 Oracle 9i 及其共享查询缓存系统的限制。 这篇文章最后呼吁社区在相关开发者会议期间进一步讨论此事。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Actually, it's implemented in LLVM for years :) https://github.com/llvm/llvm-project/commit/a98546ebcd2a692e...
reply