数据库界的换心手术:pgrust 如何用 Rust 重写 PostgreSQL 内核 📅 2026/8/17 18:35:37 数据库界的换心手术pgrust 如何用 Rust 重写 PostgreSQL 内核【免费下载链接】pgrustPostgres rewritten in Rust, now faster than Postgres and Clickhouse项目地址: https://gitcode.com/GitHub_Trending/pg/pgrustpgrust 是一个用 Rust 重写 PostgreSQL 内核的开源数据库项目目标是与 Postgres 18.3 完全兼容目前已在超过 46000 条回归查询上与 Postgres 输出完全一致新版甚至宣称分析负载比 Postgres 快约 300 倍。这篇文章将带你快速了解 pgrust 是什么、为什么值得关注、性能到底有多强以及如何 30 秒上手体验这场数据库换心手术。pgrust 是什么为什么有人要把 Postgres 重写一遍PostgreSQL 是全世界最流行的开源关系型数据库之一但它也背着沉重的历史包袱超过百万行的 C 语言代码、古老的进程模型、复杂的锁与共享内存管理以及让 DBA 又爱又恨的 Vacuum 机制。想要从内部改变它难度堪比给飞行中的飞机换引擎。pgrust 的答案很直接用 Rust 重写整个内核。但它的重写不是推倒重来而是遵循三条原则行为保持 Postgres 形状不改变 SQL 语义和使用习惯迁移零成本把真实 Postgres 测试当作裁判以官方回归测试套件作为兼容性标尺借助 Rust AI 辅助编程探索更深层的服务端改造简单说外表还是 Postgres心脏已经换成了 Rust。pgrust 核心亮点不只是换了个语言那么肤浅 ✨亮点具体表现 兼容目标对齐 Postgres 18.3官方测试即为验收标准✅ 回归测试超过 46000 条回归查询输出与 Postgres 完全一致 磁盘兼容数据文件格式与 Postgres 一致可直接挂载现有 18.3 数据目录启动 线程模型新版用每连接一线程取代 Postgres 传统的每连接一进程⚡ 性能飞跃事务负载快 50%分析负载快约 300 倍详见下文其中最让人惊叹的是磁盘兼容这意味着你现有的 Postgres 数据目录理论上可以被 pgrust 直接接管启动不需要导出导入升级路径非常平滑。性能有多强真的能追上 Clickhouse根据项目最新公告尚未发布的新版 pgrust 交出了这样一份成绩单场景对比结果事务型负载TPC-C 类比 Postgres 快约50%分析型负载比 Postgres 快约300 倍ClickBench 基准测试比 Clickhouse 慢 2 倍作者认为有望反超分析负载 300 倍的提升主要来自新架构的收益线程模型避免了进程间昂贵的上下文切换内存管理更高效查询执行路径也更紧凑。虽然目前仍在未生产就绪阶段但方向已经非常明确——Rust 不仅能重写 Postgres还能让它更快。架构拆解pgrust 是怎么拆掉 Postgres 的如果你对实现感兴趣可以在仓库中按图索骥。整个项目是 Cargo 工作区核心代码全部位于crates/backend/下几乎一一对应 PostgreSQL 官方源码的目录划分crates/backend/storage/存储引擎包含buffer/缓冲池、smgr/存储管理、lmgr/锁管理等子模块crates/backend/executor/执行器例如nodeHashjoin/、nodeAgg/等各类执行节点crates/backend/optimizer/优化器path/、plan/、prep/、util/一应俱全crates/backend/parser/解析器gram_core/是语法核心crates/backend/tcop/顶层命令分发与事务控制crates/_support/pgrust/pg_ffi_fgram/与原生 Postgres 的 FFI 桥接层scripts/run-regression一键运行 Postgres 官方回归测试的脚本可以说Postgres 有的模块pgrust 一个都不少只是换成了更安全、更现代的 Rust 实现。30 秒上手用 Docker 体验 pgrust 想亲手感受换心效果最简单的方式是 Docker 一键运行仓库的Dockerfile与docker/README.md有完整说明docker run -d --name pgrust -e POSTGRES_PASSWORDsecret malisper/pgrust:v0.1等容器就绪后直接用psql连接你就能看到熟悉的 PostgreSQL 界面psql -h 127.0.0.1 -U postgres -c select version(), 1 1 as two是不是和平时用 Postgres 一模一样这正是 pgrust 追求的效果——对用户完全透明只是底层更强了。如果想从源码构建可以参考 README 中 macOS / Debian / Ubuntu 的依赖安装步骤以及cargo build --release --locked --bin postgres的构建流程。路线图下一步要做什么️项目在 README 中公开了清晰的演进路线多线程内核进一步挖掘线程模型潜力内置连接池省掉外部 PgBouncer更强的 JSON 负载支持直面现代应用场景快速分支与派生fork/branch工作流让数据库复制粘贴无 Vacuum 存储设计彻底告别 Vacuum 焦虑坏查询与 AI 生成 SQL 的运行时护栏减少计划突变的惊魂时刻这些方向直指 Postgres 用户多年来的痛点也只有在内核可改的前提下才可能实现。现状与局限理性看待这场手术 诚实地讲pgrust 目前尚未达到生产可用还未做过充分的性能优化现有 Postgres 扩展如 PL/Python、PL/Perl、PL/Tcl尚不能普遍兼容部分 contrib 模块已经移植更多兼容性在推进中所以它更适合想研究数据库内核的开发者、关注数据库前沿的架构师、以及愿意为下一代数据库投票的尝鲜者。项目采用 AGPL-3.0 协议开源所有代码都在仓库中欢迎翻阅源码或提交 Issue 反馈。结语给数据库换一颗 Rust 的心 pgrust 用事实回答了一个大胆的问题PostgreSQL 这样复杂的系统能不能用 Rust 重写答案是不仅能而且还能跑得更快。46000 回归测试的兼容性、磁盘级兼容的平滑迁移、以及分析负载 300 倍的性能提升让这场数据库换心手术既稳健又惊艳。虽然距离生产环境还有一段路但它已经为数据库世界的未来打开了一扇新的大门——也许下一代数据库就是用 Rust 写出来的 Postgres。【免费下载链接】pgrustPostgres rewritten in Rust, now faster than Postgres and Clickhouse项目地址: https://gitcode.com/GitHub_Trending/pg/pgrust创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考