Hacker News 中文摘要

RSS订阅

PostgresBench:Postgres服务的可复现基准测试 -- PostgresBench: A Reproducible Benchmark for Postgres Services

文章摘要

ClickHouse团队基于其性能优先的设计理念,构建了PostgresBench,一个公开、可复现的基准测试工具,用于比较不同托管Postgres服务的性能表现。

文章总结

好的,这是根据您的要求,对原文进行中文重述和精简后的版本:

标题:PostgresBench:一个可复现的Postgres服务基准测试

核心内容:

ClickHouse团队在构建其托管Postgres服务时,沿用了开发ClickHouse时对性能的极致追求。为了客观评估该服务的性能,他们开发了名为PostgresBench的公开、可复现的基准测试项目。

方法论:

PostgresBench借鉴了知名的ClickBench基准测试方法,其核心原则包括: 1. 使用标准化的负载模型。 2. 在所有被测试服务上保持基础设施配置一致。 3. 公开所有配置,确保结果可复现。 4. 允许任何人提交结果或指出问题。

该基准测试基于Postgres自带的pgbench工具,采用类似TPC-B的负载,模拟了支付、订单处理等高频、短小并发事务的典型场景。

测试设置: - 客户端配置:使用16 vCPU、64 GB内存的实例,确保客户端不会成为性能瓶颈。 - 数据库配置:针对大多数服务,采用1:4的CPU与内存比例进行测试(如4 vCPU/16GB RAM和16 vCPU/64GB RAM)。AWS Aurora因实例类型限制,采用了1:8的比例。 - 硬件:尽可能使用Graviton实例和NVMe缓存。 - 高可用性:测试时未启用高可用功能,以聚焦于单节点性能。 - 配置:所有服务均使用其默认的PostgreSQL配置,不进行额外调优。 - 数据规模:测试了约100GB和约500GB两种数据规模。

测试结果摘要:

测试覆盖了五个服务,包括ClickHouse托管的Postgres、AWS Aurora、AWS RDS、Neon和Crunchy Bridge。结果显示,在两种数据规模下,ClickHouse托管的Postgres在每秒事务数(TPS)和延迟(平均、P95、P99)指标上均显著优于其他服务。

性能差异分析:

文章指出,性能差异的关键在于存储架构。ClickHouse托管的Postgres使用与计算节点物理共置的NVMe存储,实现了微秒级的磁盘访问延迟和稳定的高IOPS。相比之下,其他服务依赖的EBS或对象存储等共享存储架构,会引入网络延迟,尤其是在处理写密集型负载时,每次事务提交所需的fsync操作会累积大量开销,从而严重影响性能。

如何参与:

PostgresBench项目完全开源。任何人都可以克隆其GitHub仓库,按照文档在自己的实例上运行基准测试,并通过提交Pull Request来添加自己的系统测试结果,共同完善这个Postgres性能参考基准。

评论总结

根据评论内容,主要观点和论据如下:

1. 对基准测试方法的质疑(高认可度) - 评论7指出测试时间过短(10分钟),无法体现检查点(checkpoint)对性能的影响,建议至少30分钟。 - 评论7批评默认Postgres配置未调优,认为这测试的是托管服务的保守配置而非Postgres本身。 - 评论7强调未启用高可用(HA)不现实,且比较了冗余系统(如Aurora写六份数据)与单实例本地NVMe,认为对比不公平。 - 关键引用:评论7 "Each run lasts 10 minutes... short enough not to show the effect of checkpoints";"Default Postgres configuration... you are not benchmarking Postgres, but rather the conservationism in the decisions of the default configurations"。

2. 对测试范围扩展的期待(中等认可度) - 评论6希望包含VPS和裸机上的原生Postgres,以对比性能差异。 - 评论7建议增加自管理EC2集群(带本地NVMe)作为对比。 - 评论1好奇PlanetScale Postgres的表现。 - 关键引用:评论6 "It would be interesting to see vanilla postgres on a VPS and vanilla postgres on a bare metal server";评论7 "I miss a self-managed EC2 cluster (with local NVMe) for comparison"。

3. 对客户端性能的关注(低认可度) - 评论2认为数据库客户端是应用性能问题的根源,但被忽视。 - 关键引用:评论2 "why don’t anyone focus on the clients which talk to the databases, it is there most of an applications problem starts"。

4. 对基准测试实用性的认可(中等认可度) - 评论4赞赏该测试填补了跨云Postgres性能对比的空白。 - 评论3询问能否用于优化自己的CNPG部署。 - 关键引用:评论4 "I think there is a lack of benchmarks between Postgres cloud instances across different clouds";评论3 "Can I use this to benchmark my own CNPG on k8s"。

5. 对定价和社区参与的批评(低认可度) - 评论7认为未对比定价是“遗漏了有趣的部分”。 - 评论8指出项目自5月上线以来社区参与度低,GitHub星标和贡献者少。 - 关键引用:评论7 "you leave the fun part out?";评论8 "it doesn’t seem like the open-source community has really picked it up yet"。