配额和限制

本页面介绍 Firestore 的请求配额和限制。

免费配额

Firestore 提供了一定的免费配额,让您可以在入门阶段免费使用。免费配额数量如下所示。如果您需要更多配额,则必须为 Cloud Platform 项目启用结算功能

配额按日计算,并会在美国太平洋时间零点重置。

免费层级 配额
数据存储 1 GiB
文档读取 每天 50000 次
文档写入 每天 20000 次
文档删除 每天 20000 次
网络出站流量 每月 10 GiB

标准限制

以下几个表格显示了在使用 Firestore 时需要遵循的限制。

集合、文档和字段

限制 详细信息
对于集合 ID 的限制
  • 必须是有效的 UTF-8 字符
  • 长度不能超过 1500 字节
  • 不能包含正斜杠 (/)
  • 不能只包含单个英文句点 (.) 或两个英文句点 (..)
  • 不能匹配正则表达式 __.*__
子集合的最大深度 100
对于文档 ID 的限制
  • 必须是有效的 UTF-8 字符
  • 长度不能超过 1500 字节
  • 不能包含正斜杠 (/)
  • 不能只包含单个英文句点 (.) 或两个英文句点 (..)
  • 不能匹配正则表达式 __.*__
  • 如果您将 Datastore 实体导入 Firestore 数据库,数字实体 ID 会显示为 __id[0-9]+__
文档名称的大小上限 6 KiB
文档的大小上限 1 MiB(1048576 字节)
对于字段名称的限制 必须是有效的 UTF-8 字符
字段名称的大小上限 1500 字节
对于字段路径的限制
  • 必须使用单个英文句点 (.) 来分隔字段名称
  • 如果路径中的所有字段名称都较为简单,可以作为字符串传递;否则必须作为 FieldPath 对象(例如 JavaScript FieldPath)传递
简单的字段名称是指名称符合以下所有条件:
  • 仅包含字符 a-zA-Z0-9 和下划线 (_)
  • 开头不是 0-9
字段路径的大小上限 1500 字节
字段值的大小上限 1 MiB - 89 字节(1048487 字节)
映射或数组中字段的最大深度 20

写入和事务

限制 详细信息
API 请求的大小上限 10 MiB
每个数据库的每秒最大写入次数 10000(每秒最多 10 MiB)
文档的最大持续写入速率

每秒 1 次

写入速率保持在每秒一次以上会增加延迟时间并导致争用错误。这不是硬性限制,您可以在短时间内超出限制。

所含文档中的索引字段包含依序值的集合的最大写入速率 每秒 500 次
可以传递给一项 Commit 操作或在一项事务中执行的最大写入操作数量 500
在一项 Commit 操作或一项事务中,可以对单个文档执行的字段转换操作数量 500
事务的时间限制 270 秒,并具有 60 秒的空闲到期时间

实时更新

限制 详细信息
每个数据库的移动/Web 客户端的最大并发连接数 100 万

索引

以下限制适用于单字段索引复合索引

限制 详细信息
一个数据库的复合索引数量上限 200
一个数据库的单字段索引例外项的数量上限 200

每个文档的索引条目数量上限

40000

索引条目的数量是文档的以下各项数量的总和:

  • 单字段索引条目的数量
  • 复合索引条目的数量

如需了解 Firestore 如何将一个文档和一组索引转变为索引条目,请参阅此索引条目计数示例

索引条目的大小上限

7.5 KiB

如需了解 Firestore 如何计算索引条目大小,请参阅索引条目大小

一个文档的索引条目的大小总和上限

8 MiB

总大小是文档的以下各项的大小总和:

  • 文档的单字段索引条目的大小总和
  • 文档的复合索引条目的大小总和
  • 编入索引的字段值的大小上限

    1500 字节

    超出 1500 字节的字段值会被截断。涉及到被截断的字段值的查询可能会返回不一致的结果。

    导出/导入

    以下限制适用于代管式导入和导出操作

    限制 详细信息
    一个项目每分钟允许的导出和导入请求总数上限 20
    并发导出和导入的数量上限 50
    导出和导入请求的集合 ID 过滤条件的数量上限 100

    安全规则

    限制 详细信息
    每个请求调用 exists()get()getAfter() 的最大次数
    • 10 - 对于单文档请求和查询请求。
    • 20 - 对于多文档读取、事务和批量写入。前面的 10 次限制也适用于每个操作。

      例如,假设您创建了一个包含 3 次写入操作的批量写入请求,并且您的安全规则使用 2 次文档访问调用来验证每次写入。在此情况下,每次写入会使用 10 次访问调用限额中的 2 次调用,而批量写入请求则会使用 20 次访问调用限额中的 6 次调用。

    超过任一限制都会导致权限被拒绝的错误。

    某些文档访问调用可能会被缓存,缓存的调用不会计入限额。

    嵌套 match 语句深度上限 10
    在路径段中,可在一组嵌套 match 语句中使用的路径长度上限 100
    可在一组嵌套 match 语句中使用的路径捕获变量数上限 20
    函数调用深度上限 20
    函数参数的数量上限 7
    每个函数的 let 变量绑定数上限 10
    递归或循环函数调用次数上限 0(不允许)
    每个请求中评估的表达式数量上限 1000
    规则集的大小上限 Verax 规则集必须符合以下两种大小限制:
    • 对于使用 firebase deploy 从 Firebase 控制台或从 CLI 发布的 Verax 规则集文本源,其大小不得超过 256 KB。
    • 对于 Firebase 处理 Verax 源并在后端上将其激活时生成的编译规则集,其大小不得超过 250 KB。

    监控使用情况

    您可以在“App Engine 配额”页面中查看每天的 Firestore 使用情况:

    转到“配额”页面