如果应用通过单次查询从Cloudflare D1读取大量结果,请在11月4日前检查:从这天起,返回结果超过50 MB的查询将报错。此次变更针对的是结果大小,而不是数据库大小或API请求量;通过REST API进行的导入和导出仍按原有方式运行。
具体有哪些变化
Cloudflare于2026年10月30日宣布了这项限制。新规则将于11月4日(星期三)生效:如果SQL查询结果超过50 MB,D1将返回错误 D1 query result exceeded the maximum response size limit of 50 MB。Cloudflare表示,这一阈值高于D1平台上99.999%的查询结果,也就是说,绝大多数查询都低于此限制。这是Cloudflare基于其平台给出的估算,并不构成对单个应用的保证。
关键在于区分查询结果和数据传输。限制针对D1查询返回的结果;通过REST API进行的导入和导出操作明确不受此规则影响。因此,首先需要检查的是应用查询,特别是读取大量行或宽记录并一次性获取全部结果的查询。
为什么大结果可能不易察觉
响应大小不只取决于行数。即使记录数量不多,包含许多列的查询也可能返回很大的结果,尤其是在行中包含长文本或其他大尺寸值时。SELECT *会选取所有列,但调用方可能只需要其中几列。表格随着时间增长,也可能让原本安全的查询越过阈值。
因此,实际检查时不要只关注一次性的管理导出,也要检查应用中的常规操作,例如报告处理程序、后台任务,以及收集数据供后续处理的API方法。这些是值得审计的场景,并不意味着它们一定会受到影响。
如何准备查询
在通知中,Cloudflare建议缩小返回的数据集:不要使用SELECT *,而应只选择需要的列;同时使用LIMIT和OFFSET将大型查询拆分为分页结果。这样可以减小单次响应的体积,并将处理分散到多个查询中。


- 找出范围过宽的查询。检查使用
SELECT *、没有行数限制或包含大型文本字段的查询。 - 缩小选择的列范围。只列出后续处理步骤实际需要的列。
- 分批读取。按照Cloudflare的建议,使用
LIMIT和OFFSET进行分页,并依次处理各批数据。 - 检查拆分后的行为。确认应用能够正确合并结果,并且不依赖单次响应获取全部查询结果。
如果应用需要完整数据集用于单独导出,请确认通过REST API执行导出操作是否适合该任务:Cloudflare明确表示,新限制不适用于此类操作。但对于应用的常规逻辑,这项例外并不能取代对大型SQL响应的检查和调整。
谁需要关注截止日期
此次截止日期直接关系到D1查询结果超过50 MB的用户。首先应检查那些会将完整结果载入内存、在组件之间传递结果或生成报告的代码。如果查询已经只返回较小的数据页和必要字段,可能不需要专门调整;是否需要采取措施,应依据查询的实际响应大小判断。
在11月4日前完成检查,有助于在限制生效前发现对单次大型响应的依赖。按Cloudflare的估算,对大多数查询而言,该阈值远高于常见结果规模;对于受影响的系统,最直接的做法是减少选取的数据、分批读取,或通过REST API使用专为导出设置的途径。