跳转到内容
搜索文档

常见问题

最后更新 查看 MarkdownAgent 设置

定价

D1 会始终提供免费套餐吗?

是的,Workers 免费套餐 将始终包含免费试用和实验 D1 的功能。

如果在免费套餐上超出每日读写限制或总存储限制会怎样?

当您的账户达到每日读和/或写限制时,您将无法对 D1 运行查询。D1 API 将向您的客户端返回错误,表明已超出每日限制。达到包含的存储限制后,您需要删除未使用的数据库或清理过期数据,然后才能插入新数据、创建或更改表,或创建索引和触发器。

升级到 Workers 付费套餐通常会在几分钟内移除这些限制。

如果在付费套餐上超出每月包含的读、写和/或存储量会怎样?

您将根据 D1 的定价指标 为额外的读、写和存储付费。

如何估算(最终的)账单?

每个查询都会返回一个 meta 对象,其中包含该查询读取(rows_read)和写入(rows_written)的总行数。例如,对包含 5000 行的表执行全表扫描(例如 SELECT * FROM users)的查询将返回 rows_read 值为 5000

"meta": {
  "duration": 0.20472300052642825,
  "size_after": 45137920,
  "rows_read": 5000,
  "rows_written": 0
}

这些值也包含在 D1 Cloudflare 仪表板分析 API 中,使您能够将读写量归因于特定数据库、时间段或两者。

D1 是否对数据传输/出站流量收费?

不收费。

D1 是否对额外计算收费?

D1 本身不对额外计算收费。查询 D1 并计算结果的 Workers(例如,将结果序列化为 JSON 和/或运行查询)根据 Workers 定价 计费,此外还需支付 D1 特定用量费用。

从仪表板或 Wrangler(CLI)运行的查询是否计入计费用量?

是的,您对数据库运行的任何查询,包括将现有数据插入(INSERT)到新数据库、表扫描(SELECT * FROM table)或创建索引,都计为读或写。

能否使用索引来减少查询读取的行数?

可以,您可以使用索引来减少查询读取的行数。为最常查询的表和过滤列创建索引 可减少扫描的数据量,同时提高查询性能。如果您有读密集型工作负载(最常见),这尤其有利。写入索引引用的列将至少增加一行写入以更新索引,但这通常会被索引带来的读取行数减少所抵消。

新创建的数据库和/或没有行的空表是否计入存储?

是的,尽管很少。空表至少消耗几 KB,取决于表中的列数(表宽度)。空数据库大约消耗 12 KB 存储空间。

限制

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 执行时间通常不到一毫秒。
  • 写查询(如 INSERTUPDATE)SQL 执行时间可能需要几毫秒,取决于写入的行数。写入需要在多个位置持久保存——了解更多关于 D1 如何在底层持久化数据 的信息。
  • 影响数百万行的大型 UPDATEDELETE 等数据迁移必须分批运行。试图一次修改数十万行或数百 MB 数据的单个查询将超出执行限制。将工作拆分为较小的块(例如,每次处理 1,000 行)以保持在平台限制内。

为确保查询快速高效,在 SQL 模式中使用适当的索引

CPU 和内存

D1 数据库上的操作(包括查询执行和结果序列化)在 Workers 平台 CPU 和内存限制 内运行。

超出这些限制或达到其他平台限制将产生错误。有关更多详细信息,请参阅 D1 错误列表

Worker 可以向 D1 打开多少个同时连接?

每次 Worker 调用最多可以同时打开六个(到 D1 的)连接。

有关 Worker 同时连接的更多信息,请参阅同时打开的连接数

这篇文档对您有帮助吗?