深挖 pgrust:一个比原版还快的 PostgreSQL Rust 重写项目

📅 2026/8/18 17:09:28
深挖 pgrust:一个比原版还快的 PostgreSQL Rust 重写项目
深挖 pgrust一个比原版还快的 PostgreSQL Rust 重写项目【免费下载链接】pgrustPostgres rewritten in Rust, now faster than Postgres and Clickhouse项目地址: https://gitcode.com/GitHub_Trending/pg/pgrustpgrust 是一个用 Rust 从零重写 PostgreSQL 的开源项目目标是与 PostgreSQL 18.3 完全兼容目前已在超过 46,000 条回归查询上与官方输出完全一致。更惊人的是其新一代实现采用每连接一线程模型事务型负载比 PostgreSQL 快约 50%分析型负载快约 300 倍。本文将带你快速了解 pgrust 的性能亮点、兼容性现状以及最简单的上手方式。pgrust 是什么为什么有人要用 Rust 重写 PostgreSQLPostgreSQL 拥有四十多年沉淀的强大内核但其 C 语言代码库庞大、难以从内部改造。pgrust 的思路很直接保持 PostgreSQL 的行为与磁盘格式不变用 Rust 重写内核再用 AI 辅助编程加速改造进程。 磁盘完全兼容可以直接从一个已有的 PostgreSQL 18.3 数据目录启动✅ 官方测试作为标准答案以真实 Postgres 回归测试为 oracle逐项对齐输出 面向未来Rust 的内存安全特性 多线程模型让从内部改变 Postgres成为可能项目的定位与理念可以看仓库根目录的 README.md。pgrust 到底有多快一组让人意外的性能数据根据项目披露的最新进展尚未发布的新版 pgrust 在性能上交出了非常亮眼的成绩单负载类型相对 PostgreSQL说明事务型负载transaction workloads快约 50%得益于每连接一线程模型替代每连接一进程分析型负载analytical workloads快约 300 倍ClickBench 基准上约为 ClickHouse 的 1/2 速度团队认为 pgrust 在分析型负载上还有潜力进一步超越 ClickHouse。这意味着它不仅在兼容性上追赶 Postgres更在速度上试图反超两个方向的标杆。与 PostgreSQL 的兼容性46,000 回归查询全数通过pgrust 的兼容性验证方式非常硬核直接跑 PostgreSQL 官方回归测试套件。 已对齐46,000 条回归查询的期望输出 目标版本为PostgreSQL 18.3 测试脚本见 scripts/run-regression只需克隆仓库 Rust 工具链 一个 psql 客户端即可运行注意pgrust 目前尚未达到生产就绪状态性能也仍在持续优化中PL/Python、PL/Perl、PL/Tcl 等过程语言扩展尚未完全兼容不过部分内置 contrib 模块已经移植完成。如何在本地快速体验 pgrust方式一Docker 一键启动最简单项目提供了与官方postgres镜像形态一致的容器见 docker/README.mddocker run -d --name pgrust -e POSTGRES_PASSWORDsecret malisper/pgrust:v0.1启动后使用镜像内置的psql客户端连接即可数据目录会由 pgrust 自己的--initdb驱动完成初始化。方式二从源码编译运行Debian/Ubuntu 环境下先安装依赖sudo apt-get install -y build-essential pkg-config libicu-dev libssl-dev \ libldap2-dev libpam0g-dev postgresql-client-18克隆仓库并构建git clone https://gitcode.com/GitHub_Trending/pg/pgrust cd pgrust PGRUST_PGSHAREDIR$PWD/vendor/postgres-18.3/share \ cargo build --release --locked --bin postgres初始化数据目录并启动target/release/postgres --initdb -D /tmp/pgrust-data \ -L $PWD/vendor/postgres-18.3/share --no-locale --encoding UTF8 -U postgres ulimit -s 65520 RUST_MIN_STACK33554432 target/release/postgres -D /tmp/pgrust-data -F \ -c listen_addresses -k /tmp -p 5432 -c io_methodsync -c max_stack_depth60000最后连接验证psql -h /tmp -p 5432 -U postgres -d postgres -c select version(), 1 1 as twopgrust 的架构亮点线程模型与 seam 机制pgrust 之所以能更快关键在架构层面的大胆改造每连接一线程原版 Postgres 采用每连接一进程模型进程开销大pgrust 改为线程模型事务型负载因此提升约 50%多线程内核多线程化的 Postgres 内部实现是其核心路线图之一seam 机制通过seam-core这样的支持 crate 对内核关键路径进行可插拔的追踪与替换调试设施见 crates/_support/pgrust/trace/README.mdAI 辅助编程以 Rust AI 协作的方式加速把 C 内核翻译并重构为 Rust这一巨大工程整个工作区被拆分成数百个独立 crate见根目录 Cargo.toml覆盖解析器、优化器、执行器、存储、复制等 PostgreSQL 全链路模块。路线图pgrust 接下来要做什么根据项目公开的 Roadmappgrust 未来的重点方向包括 多线程 Postgres 内核 内置连接池 更强的 JSON 密集负载支持 存储层实验包括无 vacuum 设计️ 针对坏查询与 AI 生成 SQL 的运行时护栏⚡ 减少计划突变导致的性能抖动这些方向直指 PostgreSQL 运维中最常见的痛点也是 pgrust 从内部改变 Postgres这一目标的具体落地。结语值得关注的下一代 PostgreSQLpgrust 用 Rust 重写 PostgreSQL目前已在 46,000 回归查询上实现与官方完全一致的输出磁盘格式完全兼容新一代实现更是在事务与分析负载上双双超越原版 PostgreSQL。虽然它还处于早期阶段、尚未生产就绪但其兼容 更快 更好改的路线注定让它成为 2025–2026 年最值得跟踪的数据库基础设施项目之一。【免费下载链接】pgrustPostgres rewritten in Rust, now faster than Postgres and Clickhouse项目地址: https://gitcode.com/GitHub_Trending/pg/pgrust创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考