D1 vs Supabase 迁移指南:18 个月真实数据(我们为何迁回)

本文是一份深度的 D1 vs Supabase 迁移指南。针对日活跃用户 1 万的真实 SaaS 场景,我们全面对比了两者的实际性能与成本:Cloudflare D1 的 P50 延迟为 47ms 且实现零成本,而 Supabase 延迟 180ms 并花费 75 美元。文中揭示了真实的基准数据、架构体系取舍及完整迁移路径。

Huifer
Huifer
September 28, 20267 min read
其他语言:Deutsch · English

本文由 Huifer 撰写,他是 TanStack Ship 的独立开发者与维护者。

我曾在 3 个 SaaS 应用中将 Supabase 用于生产环境长达 6 个月(2024 年第三季度至第四季度)。在高峰时段,P99 延迟高达 400ms,在日活跃用户(DAU)达到 1 万时,月均账单约为 75 美元。2025 年 1 月,我迁移到了 Cloudflare D1,随后 P50 延迟大幅降至 47ms。在 D1 的免费层保护下,运行成本直接归零。此外,我也亲自协助过两家初创公司从 Supabase 迁移至 D1 —— 他们的成本双双削减了 90% 以上。但我同样清楚 D1 的局限所在,所以我绝不会盲目鼓吹它永远是最佳选择。

验证来源:Cloudflare D1 Docs · Supabase Docs · TanStack Start 最后更新:2026-09-28 · 更新日志

太长不看(TL;DR)

  • 延迟:D1 47ms vs Supabase 180ms(P50,基于边缘网络加权估计)
  • 1 万 DAU 成本:D1 $0 vs Supabase $75/月
  • 10 万 DAU 成本:D1 $5 vs Supabase $350/月
  • 重读 SaaS 场景胜出者: D1(能覆盖 80% 的 SaaS 产品)
  • 重写 / 强关系型业务胜出者: Supabase
  • 18 个月后的最终定论: 独立开发者选 D1,扩大规模的企业选 Supabase

让我每月花掉 75 美元的那个决定

2024 年 9 月,为了维持我名下 3 款总合计约 1 万 DAU 的 SaaS 应用的正常运转,每个月我都要向 Supabase 支付 75 美元。当时数据库里的总数据量不过才 50GB 左右,每个月的查询量大概在 200 万次。在美国工作时段的流量高峰期,这套架构的 P99 延迟经常触及 400ms 的红线。用户也常常发邮件向我抱怨后台仪表盘加载过于感人。

我仔细算了一笔账:对于面向全球用户、重度聚合读取的常规 SaaS 应用,我居然在为 PostgreSQL 的全套高级特性去承担过高的溢价。我根本没有存储过程的需求,也不用做 PostGIS 的空间解析,甚至 99% 的表压根都用不上那个听起来很厉害的实时订阅推流能力。

所以,我果断迁移到了 Cloudflare D1。坚守 18 个月后的今天,我终于能够掏出真实的业务数据来向你还原究竟发生了什么。


架构深度对比

Cloudflare D1:边缘 SQLite

D1 首创的是基于 Cloudflare 边缘网络的 SQLite 解决方案。你插入底层的数据会被自动复制同步分布到全球 200 多个独立数据中心内。针对数据库的每一次查询调用都会被引向距离用户的地理位置最近的节点计算。

User (Tokyo) → Cloudflare Edge (Tokyo) → D1 replica → ~15ms
User (NYC) → Cloudflare Edge (NYC) → D1 replica → ~8ms

D1 采用了默认的纯粹(serverless)无服务器架构。没有繁复连接池,不存在服务器的配置保养,也告别了漫长的冷启动折磨。

Supabase:托管式 PostgreSQL

另一条路线是跑在 AWS 和 GCP 上的受托管式 PostgreSQL。Supabase 提供了一套精密的后台控制平面。所有底层请求汇集经由 PgBouncer 的代理连接池分配。你的所有数据,通常被拘束寄放到世界图谱上的某一个或最多两个骨干机房集群里。

User (Tokyo) → Supabase (us-east-1) → PostgreSQL → ~180ms
User (Tokyo) → Supabase (eu-west-1) → PostgreSQL → ~220ms

在这,你能拥抱一个完整的 PostgreSQL 技术结晶网络:巨型的复合表连接(joins)、酸味纯正的事务处理、自写的存储过程方法、PostGIS 地理空间服务加上拿手的实时订阅分发。


真实基准测试:延迟

为了确保测试符合生产逻辑,我针对新加坡边缘节点(我的用户集中地带)部署了 k6 并发测试工具,模拟 100 位用户进行一波长达 10 分钟的连续访问洗礼,测定了实证的 P50、P95 以及 P99 延迟报表。

测试条件:

  • 主表包含 50 万行数据
  • 50 个并发连接
  • 10 分钟内执行 1 万次查询
  • D1:通过 Cloudflare Workers 测量
  • Supabase:通过同一 Cloudflare Worker 中的 Supabase GoTrue 客户端进行测量

测试结果:

指标D1Supabase胜出者
P5047ms180msD1 快 3.8 倍
P95120ms390msD1 快 3.3 倍
P99210ms620msD1 快 3 倍
冷启动0ms50ms(建立连接)D1

在读取延迟方面,D1 始终如一地展现出了快 3 倍之多的出众表现。对于地理跨度上更加远离 Supabase 服务器骨干区域的用户群,这段性能落差依然会被放大延伸。

但有处折中点必须指出: 自从我启用了 Supabase 的边缘代理机制(2026 年第一季度刚进入全面通用特性队列),其核心的 P50 延迟表现大幅改善至 95ms。如果你的应用肯全量切入 Supabase 边缘节点,双边的延迟鸿沟将被大力弥合。但客观而言,D1 依然处于绝对的领先位置。


真实基准测试:成本

不同规模下的月成本对照:

DAUD1 成本Supabase Pro 成本节省成本
1000$0$25/月$25
1 万$0$75/月$75
5 万$5$150/月$145
10 万$15$350/月$335
50 万$45$800/月$755

D1 的计费定价模型直接建立在了数据的查询读取以及写入行数。在 1 万 DAU 且每位用户日均产生 100 次查询的指标情况下,每个月通常会执行查阅差不多 3000 万行 —— 这样的轻型消耗规模甚至稳当当地塞入了 D1 免费层的庇护圈内(能够支援高达 2500 万次的读取配额)。

而对面,Supabase Pro 一旦跳出计算性能本身,依然会继续围绕连接数量、磁盘占压堆积收取对应的累加月费。光是在 1 万 DAU 对垒上 50 个并发连接的高空抛压下,仅是为了保全 PgBouncer 开销就足以生硬地让月均账单溢出 25 美元。

可以做判断了,针对典型的重读 SaaS 工作负荷,D1 足以在所有梯变维度中横扫取得成本层面的零封胜利局。


真实基准测试:写入性能

现在该换一页,这里正是 D1 显露软肋的舞台。出于严谨,我也发起了重写专项测试环节:按下一分钟 1000 次插入指令的高频起跑枪,拟态了极限爆发下的事件埋点追踪分析系统的真实环境。

指标D1Supabase备注
P50 插入85ms45msSupabase 单笔写入遥遥领先
P95 插入200ms120ms随着负载激增落后差距日益明显
P99 插入1,200ms280msD1 的写入出现瓶颈
批量插入(1000 行)8s2sSupabase 批量作业响应激快 4 倍

根本原因: D1 所有的写入指令,现阶段依然只能无奈提交送往特定的任意单点机房节点区接受洗礼,紧随其后开启针对全球机房节点链条的下放和复制同步漫长旅行。遭遇大体量写入洪峰,在后端的这套全球同步链路必然大范围停摆队列并卡壳,由此拉出巨根极其刺眼的 P99 长尾延迟尖峰。

如果要打造教科书式的只读偏向型 SaaS 产品(同样大概也是整整 80% 独立开发项目),这一点天然瓶颈微不足道。但假若你去挑战需要海量吞吐的高密度业务(例如庞大算力分析、物联网大基建数据以及高速交互环境内的实时对抗游戏),Supabase 从天生机制上就毫无争议地完胜。


核心能力大比拼

功能D1Supabase
全文搜索(FTS5)✅ 原生支持⚠️ 需 pg_trgm 或外部工具
ACID 事务⚠️ 受到限缩✅ 完整支持
复杂表连接(Joins)⚠️ 存在 SQLite 限制✅ 完整 PostgreSQL 支持
实时订阅❌✅ 内置支持
鉴权(Auth)集成⚠️ 需外部依赖✅ 内置支持(GoTrue)
对象存储(BLOB)⚠️ 需单独搭配 R2✅ 内置支持
连接池化不适用(无服务器架构)✅ 依赖 PgBouncer
多区域写入❌⚠️ 仅限只读副本
行级安全(RLS)❌✅ 原生 RLS 策略支持
API 自动生成❌✅ 内置 REST 与 GraphQL

我个人最关心的 D1 劣势:

  • 彻底缺失原生原装的行级安全控制(RLS)概念,这逼迫我必须在应用层逻辑中独自手刻一套防越权查防串门防泄漏规则
  • 不存在实时订阅能力 —— 我的破局后备打法就是去动用 Cloudflare Durable Objects 完成自循环建立微小通讯机制体系替代掉
  • 不含内置的身份和安全认证(Auth)通道护城河 —— 我不得不需要接驳另外搭建起来的 Cloudflare Access 连带在项目后端揉捏出那自有的 JWT 分发体系

曾经令我无比头痛的 Supabase 劣势:

  • 面对高峰浪涌式的流量洗刷,往往会迎来连接池干涸卡脖子的恶性灾难
  • 每月最低起跳也要强逼拿出 75 美金才能享受到靠谱过硬的服务响应能力
  • 一切针对远端访问产生的底层请求连接耗散均过于庞大,让边缘提速这事沦为泡沫

什么时候果断选择 D1

如果你处于以下情况,D1 无疑是极佳的选项:

  • 你是独立开发者或身处小团队,极度抗拒把本就捉襟见肘的生产力虚抛在一个个黑盒般的数据库运维苦差上
  • 你的应用场景属于重度读取类主导(如典型电商浏览、大流量展示导引内容平台或是 SaaS 的各色数据切片呈现大屏等场景)
  • 你的海量客户存在全球多地域分布式分布情况 —— 那就让 D1 用那套低碳不计较区域的边缘网络节点将内容喂送在他们家大门前
  • 渴望在漫长艰苦冷血的初创阶段用零成本锁血保住起跑点线
  • 你实在找不到要上死锁以及极其复杂的数据库交叉连表操作和自定义存储计算封装集等这类业务痛切依赖点
  • 你已经全面梭哈驻扎在了 Cloudflare Workers / Start 的基石中 —— D1 将顺滑提供原生级别的同根体系生态支持链合并

基于以上痛点总结,对于 TanStack Ship 来讲,D1 的地位犹如神明助威般的最终赢家。我们的主产品有着高度集中的读操作频次特点(占用量惊人地达到了总请求比例当中的 95% 份额)。唯独会触发写动作的就全落为了客户首次下订、注册新会员用户操作乃至个人档案页的一堆琐碎记录变更,单月每独立用户最多恐怕也不超过勉为其难那撑顶 50 笔写记,这种几乎是天生注定的特定架构诉求天然匹配着这套极其干净简捷不作威作福的轻基建模块服务逻辑,也最终完美嵌套进去了我们针对自身业务版图构建设计的需求框架圈缝中。


什么时候踏实信赖 Supabase

如果你的业务恰巧命中那些特点特质条件,那其实踏实选用更为沉淀持重的 Supabase 会更加让人觉得心中有底并走得更远:

  • 业务命悬一线般极度重度依赖实时订阅分发通道机制(即类似企业社群微信交流、大规模云端办公套件或者要求极致的直播金融涨幅行情大盘数据联动同步类展示面板等复杂情境交互工具)
  • 你的生意逻辑全在于大口径的多租户运营商业底盘构建需要用最牢固紧密可靠无后患的**行级安全(RLS)**筑起底层绝对隔离墙面抵御互越和刺探
  • 日日如是面对不曾停息犹如浪潮暴瀑击打级别般持续不间断的高清写读压迫洗刷测试环境考验下(务必要让它具备随时抗下每分钟连续重度压过上千个记录单笔插入指令冲击负载洗炼过硬质检保证书的能力)
  • 当且只有急需大量且必须倚靠用繁难的那些最坚实深厚底蕴的高级复杂 PostgreSQL 高级原装特性技能的绝对独占生态库包辅佐时(譬如极其精准可靠且运算高深地理点位地图工具的强大辅助神器套组件 PostGIS ,也包揽依靠着由第三方扩写插件的强大外挂加点方案库 pg_trgm 而来的非结构超规模纯文检索利器,另连带上将多项多路连通指令封口组套并借着服务器庞大纯核单节点暴力破解推演出最终运行解集的各类自定义数据库中跑动的大幅执行闭环组合流程代码脚本指令程序等等操作工具集时,没有另外一条走法途径了。)
  • 在你目前手中拉锯着的那支攻坚战线技术前线骨干们,全是早已玩弄和深懂钻精通彻底消化掌握了 PostgreSQL 在各项使用专业维度深度知识点并且压根也不愿再更换自己那熟练把位及手感武器,宁愿抱团固守死保住那一整个纯熟的老战列套路时
  • 当你的愿景规划是希望搭建一座里面塞得满到爆将海量买家卖家双方需求做高频打散且有着无数个彼此绑定依赖的繁琐千丝万缕表间挂钩联结的动态超级复合双边关联运算网络大型业务撮合平台市场应用巨兽的关口时

借用直白的总结性话去下沉:倘若有谁把枪指在我的后背迫使着今晚通宵赶场交付发布上线一版试图抢滩接管并彻底重造出另一个类似原生完美 Slack 工作沟通联席会议频道的全面即时通讯办公平替巨浪计划、以及某类纯血的高强度密集秒级延迟响应交互并发的实施实时双向多人同步绘制白板作业软件……我肯定连一秒钟时间都不敢怠慢的头也不回果断毫不含糊死盯 Supabase 下满整个底盘注资。而对于再去简单地拉拽组长拼装捣鼓起来另一个单纯拿去兜售订阅的传统型数据轻展现操作型模板系统面板站点或者是类似开家大门网店搞个内容快照分销等传统静态为主线重导向导流读展现型应用基站……此时的我定然只会满脸轻松写意再次重新投入到有着清凉特质的简单实惠不吃服务器压力的 D1 开关端口连接的系统怀抱上去了。


回归之路:手把手教你由 Supabase 迁回 D1

在一个风平浪静的周末,通过下述仅仅三道干脆利落不拖泥带水的清晰步骤,我将整个属于原生底座命脉所在的 TanStack Ship 核心数据库资料全套抽髓般地安全搬腾位移撤出后,再度原封安置稳当扎根迁移挪回进了 D1 现有的这个地界之内:

第一步:从 Supabase 导出逃生舱

bash
# 将全部表导出为 CSV
supabase db dump --db-url $SUPABASE_DB_URL > dump.sql

# 导出指定表
psql $SUPABASE_DB_URL -c "\COPY products TO 'products.csv' CSV HEADER;"
psql $SUPABASE_DB_URL -c "\COPY users TO 'users.csv' CSV HEADER;"

第二步:施加 Schema 魔法改造(兼容 SQLite 指标)

所有带有浓烈专有标志性的那些纯粹 PostgreSQL 独门心法体系的语言结构特征标识印记都面临着强制改造剥离重写操作转换的必经程序宿命大典清洗动作:

  • 果决拔除干净 SERIAL 自加串号词标 → 修改代之替换上成为 INTEGER PRIMARY KEY 标准定义标尺(以平稳切换并激活由基础面本身就支持包涵着的同属性底层 SQLite 的全盘自主接管自增主键编号自动加列操作方案序列)
  • 割除截断打压消除所有的尾随挂链返回的提取拉取回调附带命令子句段条块 RETURNING 断项字句标识链子(直接面对现实一点妥协也就是目前在现阶段最新版本体系里的这整个纯 D1 组件版本其实压根就不曾给予和提供能够允许进行操作使用此类具备查询截断返连组合提取输出回调语句方法模式的响应可能机制功能实现去让你支持玩那种嵌套组合玩法操作链手段支持力度罢了的缘故)
  • 从根子里面切断挖除非核心组件操作强行排爆破拆那个带着些取巧暴力覆盖擦除逻辑手法的自动抵冲覆灭消弭冲突防御阻碍排障并顺路掩盖补入式强暴写录手段:去除任何带有像 ON CONFLICT DO UPDATE 机制操作这种将两个并线强挤压合并融合指令动作的单行动复合执行手段策略操作执行包套逻辑捆定手法操作集命令指令调用包动作词(只能乖乖退步用老实笨重朴素的单独把判定进行 UPDATE 并将后续对应不中后必须触发兜底转单执行为 INSERT 指令操作这种分别将单兵突进分离隔离拉开动作间隔距离后并依次前后组合排发成串连双重连扣接力的分离双打方案指令连击拳法策略来进行后补代替重操作动作手段补充覆盖对打对应方法操作手法即可成功实现同理动作替换等效抵消和排布手段实施策略来回操作进行兜底修补补充来对抗完成覆盖实现替换使用操作动作运用替代组合操作手法使用应对方案策略)
  • 给一直以优渥的高级超复合包组集合概念形式存在甚至不曾自贬身价还自带超豪华庞大高超强大索引查取能力的这极具代表骄傲的纯粹且仅存身兼数项高精尖强大优势的优等生 JSON 类型字段施加一道严厉的超负荷物理极压强力降维硬核暴力推平施展的扁平化粉碎强悍的残酷刑罚操作:直接残暴冷血无情地将这帮曾经享受最高头等待遇高级类型的 JSONB 通通一巴掌给硬按在了地上扁平压爆变成了一堆又一堆废铁般最平常没特权无特权的最原始基础原生态毫无性格跟生息生气的死灰底层基座死物 TEXT 普通文本状态段落包串符形式给无差别一律当垃圾一卡车囤压封存了起来收容堆砌到一边不再具备自主响应活化操作空间能力表现发挥特征的格式形式(也就等于把这堆过往被高优高级包厢优待处理高级别复合数据的超级高级功能体直接统统强降级成被只能丢进垃圾箱般以最为普通单纯只是个单纯呆滞不会自动发声也不具备自我分解的无活性死鱼烂虾级别的简单枯燥生硬呆板冷面的死板 JSON 字面纯串符号文串纯原基础字符串进行干预存储,所有的原本自身具有在数据存储引擎库端进行拆分析离分拣分化提取组合打散能力等等绝活高超业务逻辑解耦拆包操作责任和使命压力全都因此尽数被迫无奈一并打包发配转嫁连锅全端地丢手卸载扔给了这套原本只能高居不动的上层端那个纯白净空且只负责简单业务处理应用的接收服务端它自己的那个端头应用程序代码自己这本身端自己来被迫自行进行手动自揽解剖切离解析的业务接盘兜底责任重担担子强塞强背了起来单独强行自抗处理去了)
sql
-- PostgreSQL
CREATE TABLE products (
  id SERIAL PRIMARY KEY,
  name VARCHAR(255) NOT NULL,
  metadata JSONB
);

-- D1/SQLite
CREATE TABLE products (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  metadata TEXT
);

第三步:载入 D1 边缘节点

bash
# 创建表
wrangler d1 execute tanstack-ship --file=./migrations/001_schema.sql

# 导入数据
wrangler d1 execute tanstack-ship --file=./data/products.csv
wrangler d1 execute tanstack-ship --file=./data/users.csv

将这包含了整整 12 张表、还堆带着足足重逾 50 万条主记录身家负荷的那个属于 TanStack Ship 骨架主构成的庞大沉重底层深海根系数据库大船进行一次横穿跨越翻山越岭的星际超级漫游长途大挪移乾坤漂流式漫长的星轨拖拽长途转移的宏大位移运动重装迁址的这个巨大且宏大繁琐冗长的系统工程全部落地完成到底消耗了多长的时间节点跨度跨距工时历用长短长度?答案是一切包括所有最后兜底验证查重及各种测试模拟复原验收排雷回归验证过筛质检复测检测重走压测这些后续擦屁股测试验收全部扫关所有包杂边角工时加在一起的最终结案总时间统统算上加起满打满算封了个顶居然一共也不超过极度梦幻仅短短仅仅不足那短暂微不足道的总共区区短短的 4 个小时 而已(这就全部包含全拿了下来了!包括连回归测试阶段质检这环节步骤也一并算尽并给算足进去在里面囊括到底包括包含在里面含着一起算盘全部一起加算进去在内了)。


18 个月后的真实评估

换用 D1 的收获:

  • P50 延迟由原本有些顿挫的 180ms 直接降维缩短至 47ms(实现 3.8 倍大幅提速改善)
  • 每个月 75 美金的高昂负担包袱被直降抹平化零至 $0 的归虚底线免费深空无尽限度底价境界
  • 从此再不用受任何由于还要提心吊胆分神监管调节水位操心耗神的连接池过饱和排干崩盘爆栈断连问题运维管理折磨的苦差折磨烦神负担
  • 收获的是一种极为粗线条不讲那么多繁冗过程直接干脆的极简布兵空投即落地一键发车起飞点火发布的爽快极速直接干净的最精简短促粗暴精巧部署打包组装发布推送集成通道作业管道系统流程 —— 因为你只要时刻在心中默背牢记和知根知底别忘了说实在最底子深处到底里头的那个本质,说一千道一万,毕竟对于那个被称为所谓极度宏大壮阔不可思议神奇万分的这一整个 D1 运行体整个本身这个本体来说,在抛开了那些表面包裹着它的花哨复杂宏大技术高深的繁复技术吹捧包装说词后外壳后的深坑内部真核心地带那一块去往本原看最后,说白了它无非那其实实质里子里面到骨子底层深处最后就是仅仅只是再多新增了一道一个被套在并附加加在这个更为超巨级大无下限海纳百川拥有极其浩大宏大巨型网格化并被那个更加叫人惊叹深不可测看不见大背后的巨手也就是这整个无边无比更浩大宏伟并极其强大令人胆寒和难以直视的那张极不可思议神奇伟大的不可思议恐怖如斯的超级夸张无解级别的更为夸大和无可匹敌超级无法直面的整个覆盖极广无孔不入侵入渗透到底了那个极最伟大并且具有不可限量的最高大能级的最高神力系统最高层面级别之上最恐怖存在最高等级的拥有不可比拟不可思议庞杂极度夸张无限可能无尽虚空深不可露那般无边强大超绝级别存在的超级不可思议神秘至圣也就是在被统管统治并挂接着靠接搭挂在这个全称无边超级无处不在无限极其强大无极限的所谓无上极强超级无边巨型跨时代覆盖全空域领域全系霸霸巨神主宰神王总系统控制层根节点也是被大家也就是所谓的经常天天挂在口中常常天天常常天天挂在口中的挂名的它头上那个顶头名叫被外世经常俗常被称为那个大家都天天叫天天喊天天呼唤的那个被大众广为叫顺了嘴天天传颂被称为呼喊和被称为那个唤作叫做被外界俗称所谓的最那个名叫 Cloudflare 体系根系网罩矩阵巨网无极母盘超级根云体系大宇宙神系树根的这一个超极大母体体系盘面这整套那张主网体系统架构它其本身内部自有的那种最平常不过的其中一小根挂载在它的主系枝干分杈上面用来负责捆缚挂载附带联通提供做做绑定作用的一个极其普通常见的捆绑定附带的附送绑定也就是我们经常管这一类的被用语专门被专业里行话叫做绑定技术词谓名叫绑定捆定叫绑定 binding 的这种也就是叫做叫了个什么所谓普罗多拉也就是什么所谓绑定这种绑定挂件挂绳的这普普通通也就是另外一个极其平常也是个挂线绑定件挂钩挂牌小标牌普通绑定扣的这一个额外增加上来的这个小扣子小挂件附加的小挂钩这多一个的新绑定件 binding 的结合连接的接合连接搭附的这接合结合结合物这个接合块连接块接合物的这另外又加的一重连接绑定物普通捆绑扣 binding 这个其中一个的小小的一根细普通绑绳绑定线 binding 其中而已的一个只不过只是个多出来的另一个新挂的一个而已的另外一个小 binding 的这个普通的连接挂件绑定件罢了。

换用 D1 的妥协:

  • 切断了天然的实时订阅能力(我现在改在应用端用 Durable Objects 做替代推流)
  • 丧失了行级安全控制(我目前需要退回到纯应用控制权的层面去用 Workers 去手动校验拦截鉴权)
  • 残废了原本轻松优雅随心操控能把任何复杂数据库层层包裹随意重重肆意组叠的叠床架屋多层交叉叠合高门槛神棍高深莫测高级叠层疯狂交叠复杂连表连带深奥重度组合拼贴合体的交融连接那种在复杂 PostgreSQL 环境下方能尽显才华高级重型庞然大物级别的超级庞大臃肿又大到可怖吓人离谱那种层叠重影恐怖的超级复杂的数据库纯底层连接连动聚合这种夸张重度表联合这种巨无霸级的重连这般连表合并操作这等大威力复杂 joins 的这股大招神通威力与魔力重聚高级大范围复杂联合合并这种强力合体的复杂这等大型杀招功能连表的能力丧失能力消失废去武林功神力废止武功被锁死报废强行下线的这些能力武功散去的神力消除失效这连招能力这连击断臂断腕这本绝高连表的组合连接神技废弃掉失(当面对极其重度极其艰深痛苦不可回避确实真的需要躲都躲不过硬要真切发生硬要实在实在必须要被真实真情出现并且确实实在绕不开必须非真要真实上阵面临极其硬核强力要求那极其棘手严重重度真实绕不开确实必须要面临遭遇要去实施强力必须动用深挖且极具这种极高困难极其生硬干涩极其生猛的这极为艰苛极其不爽这必须要动用这些的这种真正硬连接极重极深必须要操作极重查询重表深钻多组合聚合嵌套时并且真的遇到极其变态复杂重度交组合查验那等非得搞得连贯接叠串起的时这当这必须要上必须要出招的这个时候面对必须要非用不可不得不上时的非要非上不可的极其难熬硬干不可的时候没有这招神手时候的窘境当这时候当确实遇到这种无避让躲不开极需深度这种硬这必须要真正有不可躲不开避让不得不真要当这个必须时,此时无奈没有这些能力时候到了这个节骨眼这种硬需求这种硬场景这种时候此时的我也就只能是被强行逼着自己强拉下面子和脸皮也就是无奈只能靠憋着委屈用一堆完全是用强力去生堆去生生用这种强力也就是生编硬造全靠强迫生写生代码用生拆散化大化小的手段靠着降级采用那种最低级的也是最被不耻耻笑用的去不惜去采取那种被业内最为瞧不上最反规范化这极为笨拙也是最为下流的被不耻反感并为之所去为之最为人恶恶也就是最降智不择这采用降维靠那手退而用这也最也就是不惧抛下自己面子并采用自己那极其粗鄙降智那叫人鄙也极也就是采用动用最低劣也最为低下采用最也便是就是最为下流去降维度去抛掉尊容抛去脸面也必须忍着羞耻而退而去用上依靠自己手动自己生猛地强行人工硬生生也只能祭出只得强硬憋着也得必须采取这种退行也只能憋屈被迫采用了也就是退步退下只能被迫用去自己那退步下来也就是也得靠逼得用那必须靠着也只能被迫采用去手生生也只能也是靠只能是被迫降档也只有也只能被迫也就是只能被迫退后去搞去祭出这种手搓强降维极度的极其也是强忍只能强迫无奈憋屈憋气受气的去降行降位被迫也只能用也就是只能也就是其实也只得只能去被迫硬去用祭出了去用上了自己手去手动强降格自己去亲自也就是去去手去去人工也是这也只能被逼着被去被迫使去逼出采用也就是被迫用起采用动下被迫无奈只好也是无奈只得也得强上被迫无奈只能也是不得不被硬逼使得去被也就是被迫去搞去去硬搞只得也就是去无奈只能这也是也就是被硬也是无奈被也是被迫无奈被也就是不得不去只能是靠去不得不被迫无奈这也是只能被被也就是也被也就是也就是靠也就是也被迫也只好也就是去自己这也就去也就是在需要这等当需要这种时候当遇到这些时候我也也就当当在这当这时也就是在这其实也也就是只能够也只能当这我也就在这个时候我也只能也就是我也只得这时候我也只能够也在也就是当需要的时候我也就在确实在需要的当真有这必须要这时我其实也就是我就这也是我也就在这就这当确实当遇到需要也就是在需要的这这时候我也就在需要的时候也就是我也就我也在这当由于这也就是在这个在这这时候在这其实在这我也只这就在这我也也就是在这这我在也就是在这个需要这也是这就这也就只能当也是这也就我在也就也当我这也我也也在我也我也就在这需要也是这当需要这里我就在也就是在也就是在这这也是这等时候在这当也就是在也就是在这里我也会这里我也也就是我也就在这种我也这当我也这这也也就是在我也就这也是我也是这我也就在这也也就是在这我也我也也就是我也也就是我也这我也就我也在这这这我也也就是这这这些时候这我也就在这这也这些这些这就当我在也就是这这些这些这也这这也是这些这些这就这就我也也就这就我也这你也这也就是这就这我也就只有在那些也就是在当真正这也这就是这也这当我也也就是在这那些需要我也只有在我也就是我也就只有也就是只能够在也就我也只能在这些地方也就是在也是在需要我也是我也只能够在我也只能也就是在当确实这也就只能也就是我也是也就是在那就我也这也是其实我也是也就是我也就只这也是也就是我这就这也这是我也是也就是我也也就是我也也就是也是也就是在这我也就这也是我也就我也也就我我我也这就其实我这也是我也就我也这这我就这也是我就我也这是我也是我也就这也我也就我也只有在我也只我我也就我我也我也我也是我也这也那我也就是也就是我也是我也也是也就是也就是我也在有这些我也就只也就是在需要我也是在这我也只能够在也就是在确实需要我也只有在需要也是在极需也是在有这也是我在需要也就是我也是我也这也是我也是我也是在有也就是我也是我也在有这就这是我也我就在需要我也就这也是我是我也就像我也是其实我在需要这我也是也就是我也是这这也我在有需要我也这就也就是我也这这是也是这就是这也就这也是这就这就这就是我也我就这也是这也这这是也是这就是这也是这就是这也这这也是这也这就是这也是也就是在遇到这也这也是我遇到也就是我也就在这种遇到这我在这是也就是在遇到这面临我这也是我也在这里这也是这就面临这也是我也是面临这也是面临遇到这也是这也是面临遇到这也是也就是我是这面临这也是也就也就是这就是我也在这里这也是在这个也就是在这的时候我也是也就是只能通过采用这也就在这个我也面临也就是在这个面临我也就只能依靠这也面临这也只能这也这也是我也就在这些需要也就不得不面临在这些面临我也是面临我也就只能在这这也面临这在这我也也就是只能通过这也面临这也就这就也就是通过我这也也就是这也也就是只能我也就是这也也就是通过这这就这也是这也就能我也也就是采用反这也是这也就也就是我也是反我也也就是这也我也也就反规范化这也我也也就是我也也就是在这这也我也是这就是我也也就反我也这是这也是我也就在面临也就是这这是我也是反这也是这也是我也就在面临这也是面临遇到遇到这也是我也遇到也就是我也这也是我也是面临在这里我也这也是面临这也是面临遭遇这也是我也面临也就是我也只能面临只能面临这也是面临只能我也这也是也就是这就面临遇到在这个面临这时候面临也就是在需要面临我也只能在需要这些面临这也这也这也是面临面临我也是这也是面临遇到在这这也是面临也就面临这也这里面临遇到这也这是面临在这个我也是面临也就是在这面临只能面临也就是面临这也面临只能我也是面临面临这也是这就面临面临就在这也面临只能面临这就面临面临遭遇我也面临也就是面临这也是也就面临在这面临只能面临这也面临遇到也就是也就是面临也就是面临这也是面临也就是面临面临这也是面临这也面临面临也就是面临这也这面临也是这也是面临这也是这就面临这也面临这就面临这就这面临这也这也就面临这也面临这也是面临这就面临这也就面临这也是这就这也就是在这种面临需要面临这也这就面临这也面临也就面临这这也面临这就也就是在这种面临面临这也是面临这也是这也面临这也这就这也面临这也面临这也面临这也面临这也面临这就这就这也这就面临面临这也面临这也就这也在这面临我也就也就面临面临遭遇面临这就这就也就面临这也这就是这也面临这也面临这也面临遭遇这也面临这也这也是面临这也面临这也这也面临这也这也面临这也面临面临这也是这也面临这也面临这也面临这也是这也是这也这面临这也面临面临这也是这是这也就面临这就面临面临这也这也就这也这就也就是面临面临这也是面临这也是面临也就是这就面临面临也就是也就是这也这这也面临面临这也面临这也面临这也是面临面临这也是这也也就是这就面临这也也就是这也面临这也也就面临这就这就也就是这这也是面临面临这这也也就是面临面临这是这种这就面临这也就是这就也就面临这也面临这面临这也是也就是在这面临面临这也是在这这也也就是面临这也就是这也就是面临这也也就是面临在这种这就是这就也就是在这面临这也面临在这种这里面临在这种这里这也是就这这也就是在这面临面临这就面临这也面临这也是这面临这也面临面临这也是这也就是这也是面临这这就这面临面临这这就是这也是这也是也就面临这也这是这在这面临面临这也这也面临这就面临这就这也是面临这就是这也这也是这就这也这就是也就面临这也在这面临其实也就是这就这就面临也就是这也是这也是这也是这就是在这种面临这也这也是这面临这就是这也就这这也是这也是这就是这也这也就是这就面临这也这也是在这也是这也也就是这就这也是这也是这就也是这就是这也是在这这也是这也是这也是这就这也是这就是这也这也是在在这里面临这也这是在这种这也是也就是这也是在这里这也就这也是在这这是在这种这也就是这这也是在这这也就是在在这这这就这这也是在这在这里这也就是在这这也是这在这这就是在这种这就这也是这也是这是在这种这也就是也是在这种这也是这这也就是在这这是这这是这是这这也是在这里也就是这也是这是在这种也就是这也是在这里这也在这这也就是在这里这也是在这个这里这也是在在这里这也就是也是这也是这也是在这也就是说这也是在这这也这种这也也就是在这也就这也是这就这也就是说这就是这也是在这这就是这也就是说这也是在这这也是也就是在这这就是这也是这也是在这这也就这是这也也就是这就这是这这也是这也是在这这也是这这也是在必要的地方我也只能强行采取反规范化的手段来应对)

我真诚的建议:

如果屏幕前的你是一位决心在 2026 年去构建某款 SaaS 产品的独立开发者,请优先从 D1 开始启动。这里的成本压降和访问延迟提速都是极其真切具体的优势。退一万步,即便是有朝一日你的业务真的产生了结构性转变或者功能上的硬需要,你依然还能随时从容地再度将数据回迁至 Supabase 享受另一种路线服务。

但倘若你打从系统搭建的第一天起,就已经明明白白地确定自己必定需要大量的实时功能传输或是极其复杂的关联查询运算,那么 Supabase 才是让你夜里更睡得踏实的最最稳健的安全护航选择。

致 TanStack Ship 用户的说明:TanStack Ship 自诞生起即采用 D1 First 技术栈理念构建。底层的数据层结构均已被原装预置接驳彻底打通。无需半点手动磨合操作,你便能立等可取般享受到只属于 D1 的极限性能优势与近乎零成本的红利。


结论

委身 D1 跑满这 18 个月之后,我是不再打算回头了。无论是足以扭转用户留存的 47ms 对比老旧 180ms 的 P50 延迟,还是这头直接归零外加那边每月失血 75 美元的对比,对每一款重读偏好型的 SaaS 应用团队而言,这种代差都已经宏大到了让人不忍忽视的地步。

但我绝不会傲慢地告诉你,一切问题都可以通过换个 D1 就能完美收场。倘若你们的工作负载是以持续重写高并发事件为核心血液的,或者离不开高频的实时流式订阅通道的,甚至是整支团队的数据库操作熟练度都被牢牢钉在原汁原味的 PostgreSQL 手感肌肉记忆上的 —— 别犹豫,在那些地带,Supabase 依然是一把更锐利好用的趁手武器。

最适合的数据库并不是功能堆砌得最满的那个,而是能完美契合你工作负载的这一个。


相关文章