D1 适合评论、表单、文章元数据和小型 SaaS 业务表,例如用户、项目、订单、设置。文件、图片、附件不要放进 D1,文件本体进 R2,D1 只存对象标识和状态。
半结构化大 JSON 和长正文要拆:常查字段拆列,文件或大内容进 R2。登录会话只有低频场景适合放 D1;强撤销和高频校验走 Durable Objects 或认证服务。高频计数器、库存、排行榜优先评估 Durable Objects 或分片设计。大型分析和事件日志不放 D1,看指标分析、R2 或数据管道。单库接近上限时不要硬撑,按租户、项目或实体拆库。
读取行数增长快,常见原因是没有索引、分页方式不对、后台筛选扫全表。单个接口读了异常多行时,核查 Workers Logs、D1 指标和查询条件,再补索引或改分页。
写入行数增长快时,先看评论、表单、第三方回调、导入、批量更新和删除。数据量增长快时,要记住表、索引和历史数据都占空间;文件和大段内容应放 R2。单库接近限制时按租户、项目或业务域拆库。时间恢复只覆盖有限窗口,重要数据要导出到 R2 或外部备份。
- 不要只看返回行数,也要看扫描行数。常用
WHERE、排序和关联字段要建索引。 - 不要把文件或大字段放进 D1。R2 放文件,D1 放元数据。
- 不要把 D1 当半结构化文档库。早期可以简单用,生产前要把常查字段拆出来并限制单行大小。
- 不要把时间恢复当备份。重要数据定期导出到 R2 或外部备份。
- 不要让生产、预览、本地共用一个库。本地、预览、生产使用不同数据库。
- 大更新不要一次跑完。大迁移、大删除、大导入分批执行。
- 开读复制后不要忽略一致性。写后读、认证、订单确认优先走主库或会话一致策略。
建表前先列列表页、详情页、后台筛选和登录查询,再定索引。发现行读取异常时,定位接口和查询,再看索引、分页或套餐。评论、表单、第三方回调、支付回调要有唯一键或去重字段,保证写入可重试。
租户、项目、区域或实体清楚时可以拆库。数据结构变化用迁移文件管理。整体分层保持简单:D1 存关系数据,R2 存文件,KV 存公开配置和缓存,Queues 处理慢任务。