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),仅供参考