资讯动态

用数据说话:pgrust 基准测试方法与实践指南

发布时间:2026/8/17 18:09:38 来源:尧图企业网站定制
用数据说话pgrust 基准测试方法与实践指南【免费下载链接】pgrustPostgres rewritten in Rust, now faster than Postgres and Clickhouse项目地址: https://gitcode.com/GitHub_Trending/pg/pgrustpgrust 基准测试是评估这款用 Rust 重写的 PostgreSQL性能最直观的方式。pgrust 是一个目标兼容 PostgreSQL 18.3 的开源数据库项目官方宣称其新一代实现比原生 PostgreSQL 更快在分析型负载上甚至敢于对标 ClickHouse。本文用数据说话带你掌握 pgrust 基准测试的方法论、上手步骤与结果解读技巧无论你是想评估迁移价值还是想亲自复现这些惊人的性能数据都能快速上手。pgrust 基准测试为什么这些数据值得关注 数据库领域的重写大多停留在口号层面而 pgrust 直接用数据回应质疑。根据项目 README.md 中公开的基准测试结果事务型负载比 PostgreSQL 快约 50%分析型负载比 PostgreSQL 快约 300 倍ClickBench 基准约为 ClickHouse 的 2 倍慢且团队认为还有继续超越的空间这些数字背后是架构层面的改变新一代 pgrust 采用一连接一线程模型替代 PostgreSQL 传统的一连接一进程模型这是事务性能跃升的核心原因。而对分析型负载的数百倍提升则来自存储与执行层的深度优化。 注意README 中明确说明 pgrust 尚未达到生产级也未做全面性能优化。因此这些基准测试数据更像潜力证明而非最终答案——这正是我们亲自动手复测的价值所在。pgrust 基准测试方法总览先立正确性再谈性能任何可靠的pgrust 基准测试都遵循同一个原则性能数据必须建立在结果正确的基础上。一个跑得飞快却算错结果的数据库毫无意义。pgrust 的方法论很清晰——用 PostgreSQL 官方回归测试作为正确性标尺。用 46,000 条回归查询校准结果正确 ✅pgrust 将 PostgreSQL 18.3 的整套回归测试文件SQL 用例与期望输出内嵌进仓库并提供了一个免源码、免 C 编译器的回归测试运行器PGRUST_BIN$PWD/target/release/postgres \ scripts/run-regression该脚本位于 scripts/run-regression它的设计思路非常巧妙用 pgrust 自带的--initdb初始化数据目录读取仓库内置的vendor/postgres-18.3测试文件逐条执行回归查询与 PostgreSQL 官方期望输出逐字比对输出PASS/FAIL/CRASHED统计目前已通过 46,000 条查询。回归测试所需的regress测试辅助函数由 crates/backend/test_regress 以 Rust 内置库的形式重新实现替代了原版 C 语言regress.so。跑基准测试之前先让回归测试全绿是判断这个 pgrust 快得有意义的前提。快速跑通第一个 pgrust 基准测试环境准备与启动要在自己机器上复现 pgrust 基准测试只需三步编译、初始化、启动。源码编译 pgrust 的最快方法以 Debian/Ubuntu 为例先安装依赖sudo apt-get update sudo apt-get install -y build-essential pkg-config libicu-dev libssl-dev libldap2-dev libpam0g-dev postgresql-client-18然后编译注意指定 PostgreSQL 的 share 目录PGRUST_PGSHAREDIR$PWD/vendor/postgres-18.3/share \ cargo build --release --locked --bin postgres完整步骤见 README.md 的 Build From Source 一节。想跳过编译可以直接用 Dockerdocker run -d --name pgrust -e POSTGRES_PASSWORDsecret malisper/pgrust:v0.1Docker 镜像的详细用法记录在 docker/README.md镜像内已内置 PostgreSQL 18 的psql客户端。初始化数据目录并启动服务# 初始化数据目录使用 pgrust 自己的 initdb 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启动参数中的io_methodsync是当前引导路径使用的同步 IO 模式基准测试前的热身阶段建议保持默认配置避免引入额外变量。启动后即可用psql连接psql -h /tmp -p 5432 -U postgres -d postgres \ -c select version(), 1 1 as two服务正常响应后你的 pgrust 基准测试环境就绪了。事务型负载基准测试一连接一线程带来 50% 提升 ⚡事务型负载的基准测试核心场景是大量短小的事务读写类似金融转账、订单更新。PostgreSQL 经典的压测工具是pgbenchpgrust 完全兼容其连接协议可以直接复用。建议的基准测试步骤建好压测数据表并填充数据如 pgbench 默认的account/branch/teller表分别对 PostgreSQL 18.3 与 pgrust 执行完全相同的压测脚本固定相同的并发连接数、事务数、随机种子对比 TPS每秒事务数与平均延迟。pgrust 的优势来自架构差异传统 PostgreSQL 每个连接对应一个操作系统进程进程间切换开销大pgrust 采用线程模型上下文切换成本显著更低。这也是比 PostgreSQL 快 50%这一事务基准测试数据的来源。分析型负载基准测试ClickBench 上 300 倍加速怎么来 分析型负载OLAP考验的是全表扫描、聚合、JOIN 等重查询能力。pgrust 团队使用业界知名的ClickBench基准ClickHouse 官方推出的分析基准测试集进行对比对比项相对 PostgreSQL相对 ClickHouse分析型查询耗时快约300 倍慢约2 倍追赶中事务型查询耗时快约50%不适用不同赛道分析型基准测试的实践要点使用相同的 ClickBench 数据集与查询集分别在三个数据库上执行统一记录冷启动与热缓存两轮数据避免缓存干扰结论注意 pgrust 的查询计划器尚在优化中某些查询可能因计划选择差异而表现不稳定建议多次取中位数。300 倍的加速幅度远超常规优化能带来的收益这提示 pgrust 在存储布局或执行路径上做了结构性改动——这恰恰是 Rust 重写带来的从内部改变的想象力。项目路线图README.md 的 Roadmap 一节中的no-vacuum 存储实验多线程内核等方向都可能进一步放大分析型负载的优势。基准测试结果解读的 3 个注意事项 ⚠️数据会说话但也可能说谎。解读 pgrust 基准测试结果时请注意三点关注正确性基线先跑 scripts/run-regression 确认回归测试通过再谈性能数字控制环境变量同一台机器、同版本编译器、同数据集、同并发模型否则对比毫无意义区分负载类型事务型看 TPS 与 p99 延迟分析型看端到端耗时不要用一把尺子衡量两个维度。此外pgrust 目前明确标注尚未做全面性能优化某些模块如 JSON 负载、扩展生态仍在兼容路上。若你的场景高度依赖 PostgreSQL 扩展基准测试前请先确认所需扩展已被移植。结语用你自己的数据做决策 pgrust 用比 Postgres 快、敢比 ClickHouse的数据吸引了大量关注但最可靠的基准测试永远是你自己跑出来的那一份。本文梳理的方法论——先过 46,000 回归测试、再分事务型与分析型负载分别压测、最后控制变量解读结果——可以帮你快速复现并验证这些性能声明。想要亲自验证克隆仓库即可开始git clone https://gitcode.com/GitHub_Trending/pg/pgrust在数据库技术演进的浪潮中用数据说话比任何宣传都更有说服力。现在就动手跑出属于你的第一份 pgrust 基准测试报告吧【免费下载链接】pgrustPostgres rewritten in Rust, now faster than Postgres and Clickhouse项目地址: https://gitcode.com/GitHub_Trending/pg/pgrust创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价