pgrust vs ClickHouse:ClickBench 分析型负载巅峰对决,Rust 重写 Postgres 能赢吗?
2026/9/6 11:43:39 网站建设 项目流程

pgrust vs ClickHouse:ClickBench 分析型负载巅峰对决,Rust 重写 Postgres 能赢吗?

【免费下载链接】pgrustPostgres rewritten in Rust, now faster than Postgres and Clickhouse项目地址: https://gitcode.com/GitHub_Trending/pg/pgrust

pgrust 是一个用 Rust 完整重写的 PostgreSQL,它在保持 Postgres 18.3 兼容性的同时,向分析型负载的性能天花板发起了冲击。在官方公布的 ClickBench 基准测试中,pgrust 的分析型查询速度比原生 Postgres 快约300 倍,目前仅比 ClickHouse 慢约 2 倍,而开发团队认为这远不是终点。这场 Rust 重写数据库与传统 OLAP 王者 ClickHouse 的巅峰对决,结果究竟如何?本文带你一探究竟。

ClickBench 是什么?为什么它是分析型负载的"照妖镜"?

ClickBench 是 ClickHouse 团队发起的一个公开数据库基准测试,模拟真实的网页分析场景。它包含约 1 亿行点击流数据,以及 43 条覆盖过滤、聚合、排序、连接、子查询等典型分析模式的查询。之所以权威,是因为它:

  • 数据真实:基于真实网站点击日志,而非合成数据;
  • 查询全面:从简单 WHERE 过滤到复杂多表 JOIN 一应俱全;
  • 跨库可比:同一套查询在 PostgreSQL、ClickHouse、DuckDB、SQLite 等数据库上统一运行。

对于任何想要证明自己分析性能的数据库来说,ClickBench 都是最硬的试金石。

巅峰对决:三组关键数字看懂差距

Postgres 的"天花板":pgrust 快 300 倍

传统 Postgres 在单机分析型负载上表现平平,这是它的架构基因决定的。而 pgrust 通过 Rust 重写,把分析查询速度提升了约 300 倍。这意味着原本需要数分钟的报表查询,在 pgrust 上可能只需一两秒。

ClickHouse 的"底线":pgrust 仅慢 2 倍

ClickHouse 是公认的分析型数据库标杆,专为 OLAP 场景深度优化。pgrust 目前在 ClickBench 上落后它约 2 倍——考虑到 pgrust 是一个"Postgres 形状"的数据库,要同时保持事务语义、MVCC、完整 SQL 兼容性,这个差距已经相当惊人。

未来:团队目标是反超 ClickHouse

pgrust 团队明确表示:"我们相信它可以变得比 ClickHouse 更快。" 目前发布的新版本在事务负载上已比 Postgres 快 50%,分析负载的优化仍在持续推进中。

为什么 Rust 重写能带来如此大的性能飞跃?

线程模型:从"每连接一进程"到"每连接一线程"

原生 Postgres 采用进程模型,每个连接就是一个独立进程,进程间通信、内存隔离开销巨大。pgrust 改为线程模型,显著降低了连接和上下文切换成本,这也是事务负载提升 50% 的核心原因之一。

执行器与存储的深度优化

pgrust 对执行器、聚合、哈希分组等热点路径进行了 Rust 级别的重写。例如聚合节点位于 crates/backend/executor/nodeAgg/src/aggstate.rs,哈希分组逻辑在 hash_grouping.rs,这些模块在 Rust 编译器的高效代码生成下,配合内存安全的无 GC 管理,让数据密集型计算如虎添翼。

优化器与计划生成的现代重构

分析型查询的性能高度依赖查询计划。pgrust 重写了优化器核心,路径选择与代价估算模块位于 crates/backend/optimizer/,配合存储层 crates/backend/access/heap/heapam.rs 的优化,让复杂分析 SQL 也能跑出接近专用 OLAP 引擎的水平。

快,但没丢掉 Postgres 的灵魂:46,000+ 回归测试

性能再强,如果 SQL 行为不一致也是白搭。pgrust 的核心策略是"行为保持 Postgres 形状,用 Postgres 的真实测试作为裁判"。目前它:

  • 完整兼容Postgres 18.3,包括磁盘格式兼容,可直接从现有 Postgres 18.3 数据目录启动;
  • 通过了46,000+ 条 Postgres 回归查询,覆盖解析、优化、执行、事务等方方面面;
  • 提供一键回归测试脚本 scripts/run-regression,用 vendored 的 Postgres 测试文件逐条验证输出一致性。

这意味着你可以把它当作一个"性能更强的 Postgres"来用,而不是重新学习一套新数据库。

这场对决给开发者什么启示?

如果你是 OLAP 重度用户

短期来看,ClickHouse 仍是分析型负载的稳妥选择;但如果你同时需要事务处理与分析查询、希望一套系统打天下,pgrust 的路线(兼容 Postgres + 逼近 ClickHouse 性能)非常有吸引力。

如果你是 Postgres 用户

pgrust 可能是你升级分析性能的"免费午餐"——同样的 SQL、同样的数据文件,却能获得几百倍的查询加速,迁移成本极低。

如果你是技术爱好者

pgrust 证明了"用现代语言重写经典系统"的巨大潜力。Rust 的所有权模型 + 无 GC 运行时,加上 AI 辅助编程的加速,正在让数据库内核的迭代速度进入新的时代。

结语:胜负未定,但方向已明

在 ClickBench 这场分析型负载的巅峰对决中,pgrust 暂时落后 ClickHouse 约 2 倍,却已经将原生 Postgres 甩开 300 倍。更重要的是,它用兼容性换取了用户的信任,用性能证明了 Rust 重写的价值。随着线程化内部、连接池内置、无 vacuum 存储等路线图上的实验逐步落地,这场对决的最终胜负,值得我们持续关注。

【免费下载链接】pgrustPostgres rewritten in Rust, now faster than Postgres and Clickhouse项目地址: https://gitcode.com/GitHub_Trending/pg/pgrust

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询