Prisma 7:用纯 TypeScript 拆掉 Rust 引擎后的提速与取舍
阅读时间: 大约 9 分钟
Prisma 7:用纯 TypeScript 拆掉 Rust 引擎后的提速与取舍

在 ORM 领域,“用 Rust 写核心引擎”长期被当作性能与工程标杆。Prisma 7(2025 年 11 月 19 日,Mike Hartington 发布)却反着来:把 Prisma Client 从 Rust 重写成纯 TypeScript。表面看像”逆流”,官方给出的账却很直白——90% 包体积缩减、3 倍查询提速、更低的 CPU/内存占用。本文基于官方公告,拆解它为什么拆 Rust、改了什么,以及迁移的真实成本。
一、为什么要拆掉 Rust
Prisma 6.0 时就承诺要把客户端从 Rust 迁回 TypeScript。官方给了三条理由:
- 贡献门槛:Rust 客户端让不懂 Rust 的社区贡献者难以参与,“想改也改不动”;
- 跨语言通信慢:Rust 与 JS 运行时之间的通信层,比纯 JS 直接执行更慢,还带来额外的运行时依赖;
- 部署受限:原生 addon 在 Cloudflare Workers 这类有部署体积/运行时限制的边缘环境里是负担。
Deno 的 Luca Casonato 公开表态欢迎这次拆分:“不用再处理 native addon API,Deno 支持 Prisma 会简单很多。”
这其实不是临时起意。官方在 2024 年 12 月就发过《Prisma ORM 未来愿景》长文,明确把”脱离 Rust 客户端”列为路线图第一步。背后还有一层商业判断:Prisma 同期推出了托管 Postgres(Prisma Postgres),ORM 与数据库捆绑的战略已经成型;当主战场从”本地装一个 Rust 引擎”转向”Edge 上跑、云数据库配”,一个无原生依赖、ESM 优先、能塞进 Workers 体积预算的轻量客户端,就比一个”理论上更快但跨语言 IPC 慢”的 Rust 引擎更划算。换句话说,Prisma 算的不是”Rust vs TS 谁更快”的纸面账,而是”在边缘运行时里谁部署得下、跑得快、改得动”的综合账。
二、关键收益与迁移
官方列出的 Rust-free 客户端结果如下:
| 项目 | 官方口径 |
|---|---|
| 包体积 | 缩小约 90% |
| 查询执行 | 快约 3 倍 |
| CPU/内存占用 | 显著降低 |
| 部署 | Vercel Edge / Cloudflare Workers 更简单 |
| 迁移改动 | 仅改 generator provider |
迁移极简:把 schema.prisma 里 provider = "prisma-client-js" 改成 provider = "prisma-client"(rust-free 且 ESM)即可,官方称”不需要重构整个应用”。Kent C. Dodds 也背书说切换很顺。
三、生成代码出 node_modules + 新配置文件

两个长期被吐槽的工程问题也一并改了:
- 生成代码搬出 node_modules:以前 client 生成在 node_modules 里,改模型要先停掉应用进程才能重新生成;现在默认生成到项目源码里,文件监听器能即时响应
prisma generate,dev workflow 不再被”藏在 node_modules”打断; - 新的 prisma.config 文件:以前配置散在 schema 和 package.json 里,现在用一个 JS/TS 文件集中定义 schema 位置、seed 脚本、数据库 URL,还能用 dotenv 动态注入。
四、类型系统:与 ArkType 作者合作精简
类型安全是 Prisma 的招牌,但生成大量类型会拖慢 TS。官方与 ArkType 作者 David Blass 合作评估后:
- 评估一个 schema 所需类型减少约 98%;
- 查询评估所需类型减少约 45%;
- 全量类型检查快约 70%。
这意味着类型安全的”税”显著降低——大型项目里 tsc 跑不动的问题会缓解。
五、Prisma Postgres 与生态
同版本还推了托管 Postgres:裸金属 + unikernel microVM,npm create db 一条命令起库,提供 API 与 MCP server 让 AI agent 按需建库;并且改用标准 Postgres 连接协议,Cloudflare Hyperdrive、TablePlus、Retool 乃至其他 ORM 都能直连——它本质就是标准 Postgres,只是开箱即用。
六、评测口径与迁移风险
- 所有数字都是 Prisma 自测:90%、3 倍、70%、98% 均来自官方 benchmark,没有第三方在统一硬件/数据集下复核;“我们有 benchmark 证明”指向其自测页面;
- “Rust 更快”被部分证伪:这里的快指的是”去掉跨语言 IPC 后的 JS 执行”,不是说 Rust 本身慢;换个 workload 结论可能不同;
- 迁移成本仍在:虽然只改 provider,但生成位置变了、配置文件变了,CI、部署脚本、自定义生成逻辑都要回归;周报名提醒,Prisma 历史上几次大重构都逼走过一部分用户转投 Drizzle 等新 ORM,这次能否平滑是它对社区的承诺。
七、优势与局限
优势:
- Edge 部署友好:无原生 addon、包体积大减,正中 Cloudflare Workers / Vercel Edge 痛点;
- 类型检查大幅提速:大型 TS 项目 DX 提升明显;
- 工程流修复:生成代码出 node_modules、配置集中,长期痛点被解决;
- 迁移路径轻:改一行 provider 即可起步。
局限:
- 性能数字缺独立验证;
- 历史包袱用户要回归测试:CI/部署/自定义生成可能受影响;
- 纯 TS 客户端在极限查询吞吐上是否追得上原生引擎,仍需大流量检验;
- 托管 Postgres 是商业产品:自管数据库团队用不到这部分红利;而且纯 TS 客户端把执行放回 JS 主线程,极重 OLAP 式批量查询是否会挤占事件循环,仍需在真实业务里观察。
八、谁该关注
- 跑在 Cloudflare Workers / Vercel Edge 的团队:这是 7.0 最大的受益人群;
- 大型 TS 项目被 tsc 慢拖慢的开发者:类型精简直接改善 DX;
- 新启动的 Prisma 项目:直接用新 provider,免迁移;
- 重度依赖旧生成路径/自定义引擎的老项目:升级前务必在 CI 完整回归。
整体看,Prisma 7 是一次”面向边缘与类型体验”的架构收敛:它主动放弃了 Rust 原生引擎这块曾经的卖点,换取更小的体积、更短的 IPC 链路和更开放的贡献门槛。对新用户这是几乎无感的升级;对老用户,关键是在升级窗口里把 CI、部署与自定义生成逻辑全部跑一遍,确认没有踩到生成路径与配置文件变更的坑。