彼得·艾森特劳特:不同编译器下的PostgreSQL性能

💡 原文英文,约400词,阅读约需2分钟。
📝

内容提要

通过测试发现,使用不同编译器运行PostgreSQL的性能差异很小。在相同版本中,性能可能会稍有提升,但不足以为了升级编译器而费力。与默认设置相比,使用release设置几乎没有提升。不建议使用minsize设置,因为它比默认设置慢约10%。总的来说,使用默认编译器和默认构建类型已经足够好。

🔎

延伸解读

测试方法的局限性

本文的结论基于一个非常简单的基准测试:pgbench的select-only工作负载,默认比例和单客户端。这种设计有意排除了并发和I/O因素,以聚焦编译器影响。但因此结果可能不适用于写密集、高并发或复杂查询场景。读者在参考结论时,需注意测试范围有限,实际生产环境中的性能表现可能不同。

编译器版本升级的性价比

测试显示,同一编译器家族内,从最旧到最新版本性能提升最多约1%。这意味着为了追求这点提升而升级编译器,可能并不值得,尤其是考虑到升级可能带来的兼容性风险和维护成本。对于大多数生产环境,保持现有稳定版本是更稳妥的选择。

构建类型的选择建议

默认的debugoptimized构建类型与release(-O3)相比,性能差异最多约1%,但release可能增加编译时间和二进制大小。而minsize(-Os)比默认慢约10%,不适合生产。因此,除非有特殊需求,使用默认构建类型即可获得最佳平衡。

❓

Q&A

不同编译器对PostgreSQL性能的影响有多大?

不同编译器运行PostgreSQL的性能差异很小,通常不到1%。

使用release设置对PostgreSQL性能的提升如何?

使用release设置对性能的提升几乎没有,最多约1%。

为什么不建议使用minsize设置?

minsize设置比默认设置慢约10%,因此不建议用于生产构建。

在PostgreSQL的编译中,默认设置是否足够?

是的,使用默认编译器和默认构建类型已经足够好。

不同版本的编译器对PostgreSQL性能有何影响?

不同版本的编译器性能略有提升,但不足以值得升级,最多约1%。

测试PostgreSQL性能时使用了哪些编译器?

测试使用了clang和gcc编译器的多个版本。

🏷️

标签

➡️

继续阅读