| 功能 | 限制 |
|---|---|
| 每个账户的数据库数量 | 50,000(Workers Paid)1 / 10(Free) |
| 最大数据库大小 | 10 GB(Workers Paid)/ 500 MB(Free) |
| 每个账户的最大存储 | 1 TB(Workers Paid)2 / 5 GB(Free) |
| Time Travel 持续时间(时间点恢复) | 30 天(Workers Paid)/ 7 天(Free) |
| 最大 Time Travel 恢复操作 | 每 10 分钟 10 次恢复(每个数据库) |
| 每次 Worker 调用的查询数(读取子请求限制) | 1000(Workers Paid)/ 50(Free) |
| 每个表的最大列数 | 100 |
| 每个表的最大行数 | 无限制(不包括每个数据库的存储限制) |
最大字符串、BLOB 或表行大小 |
2,000,000 字节(2 MB) |
| 最大 SQL 语句长度 | 100,000 字节(100 KB) |
| 每个查询的最大绑定参数 | 100 |
| 每个 SQL 函数的最大参数 | 32 |
LIKE 或 GLOB 模式中的最大字符(字节)数 |
50 字节 |
| 每个 Workers 脚本的最大绑定数 | 约 5,000 3 |
| 最大 SQL 查询持续时间 | 30 秒 4 |
最大文件导入(d1 execute)大小 |
5 GB 5 |
Cloudflare 还提供其他存储解决方案,例如 Workers KV、Durable Objects 和 R2。每种产品有不同的优势和限制。请参阅选择数据或存储产品,了解哪种存储选项适合您的用例。
与 D1 限制相关的常见问题:
D1 设计用于在多个较小的(10 GB)数据库之间水平扩展,例如按用户、按租户或按实体的数据库。 D1 允许您构建包含数千个数据库的应用程序,无需额外费用,因为定价仅基于查询和存储成本。
每个 D1 数据库最多可存储 10 GB 数据。
每个单独的 D1 数据库本质上是单线程的,一次处理一个查询。
您的最大吞吐量与查询持续时间直接相关。
- 如果平均查询耗时 1 ms,您大约可以每秒运行 1,000 次查询。
- 如果平均查询耗时 100 ms,您每秒可以运行 10 次查询。
收到过多并发请求的数据库将首先尝试将它们排队。如果队列已满,数据库将返回"过载"错误。
每个单独的 D1 数据库由单个 Durable Objects 支持。使用 D1 读复制 时,每个副本实例是不同的 Durable Object,这些准则独立适用于每个副本实例。
查询性能是吞吐量的最重要因素。作为粗略指南:
- 对
id有适当索引的读查询(如SELECT name FROM users WHERE id = ?)SQL 执行时间通常不到一毫秒。 - 写查询(如
INSERT或UPDATE)SQL 执行时间可能需要几毫秒,取决于写入的行数。写入需要在多个位置持久保存——了解更多关于 D1 如何在底层持久化数据 ↗ 的信息。 - 影响数百万行的大型
UPDATE或DELETE等数据迁移必须分批运行。试图一次修改数十万行或数百 MB 数据的单个查询将超出执行限制。将工作拆分为较小的块(例如,每次处理 1,000 行)以保持在平台限制内。
为确保查询快速高效,在 SQL 模式中使用适当的索引。
D1 数据库上的操作(包括查询执行和结果序列化)在 Workers 平台 CPU 和内存限制 内运行。
超出这些限制或达到其他平台限制将产生错误。有关更多详细信息,请参阅 D1 错误列表。
每次 Worker 调用最多可以同时打开六个(到 D1 的)连接。
有关 Worker 同时连接的更多信息,请参阅同时打开的连接数。
-
每个账户的最大数据库数量可在 Workers Paid 和 Enterprise 套餐上按请求增加,支持每个账户数百万至数千万(或更多)数据库。请参阅本页关于增加限制的说明以请求增加。 ↩
-
每个账户的最大存储可在 Workers Paid 和 Enterprise 套餐上按请求增加。请参阅本页关于增加限制的说明以请求增加。 ↩
-
单个 Worker 脚本最多可有 1 MB 的脚本元数据。绑定定义为对资源的绑定,例如 D1 数据库、KV 命名空间、环境变量或密钥。每个资源绑定约 150 字节,但环境变量和密钥的大小由您提供的值控制。不包括环境变量,单个 Worker 脚本最多可绑定约 5,000 个 D1 数据库。 ↩
-
对 Cloudflare API 的请求必须在 30 秒内完成。因此,此持续时间限制也适用于整个批处理调用。 ↩