配额和限制

本文档列出了适用于 BigQuery 的配额和限制。

配额限制了 Cloud 项目可使用的特定共享 Google Cloud 资源(包括硬件、软件和网络组件)的数量。

配额是执行以下操作的系统的一部分:

  • 监控 Google Cloud 产品和服务的使用情况或消费情况。
  • 为了确保公平性和减少使用量高峰等原因,您可以限制对这些资源的消耗。
  • 维护可自动强制执行规定限制的配置。
  • 提供更改配额或请求更改配额的方法。

超过配额时,在大多数情况下,系统会立即阻止对相关 Google 资源的访问,并且您尝试执行的任务将失败。在大多数情况下,应于每个 Cloud 项目的配额,并由使用该 Cloud 项目的所有应用和 IP 地址共享。

许多产品和服务还具有与配额系统无关的限制。除非另有说明,否则通常无法增加或减少这些限制(例如文件大小上限或数据库架构限制)。

默认情况下,BigQuery 配额和限制按项目计算。按不同基础计算的配额和限制如下所示;例如,每个表的最大列数或每位用户的并发 API 请求数上限。具体政策取决于资源可用性、用户个人资料、Service Usage 历史记录和其他因素,如有更改,恕不另行通知。

配额补充

系统会全天定期补充每日配额,以反映这些配额在限制速率方面的意图。系统还会间歇性刷新,以避免在配额用完时出现长时间中断。通常情况下,系统每过几分钟就会提供更多配额,而不是每天在全局范围内补充一次配额。

申请增加配额

如需增加或减少大多数配额,请使用 Google Cloud Console。某些配额无法超出其默认值。

如需了解详情,请参阅使用配额的以下部分:

如需在 Cloud Console 中申请增加配额的分步指南,请点击操作演示

操作演示

权限

要在 Cloud Console 中查看和更新 BigQuery 配额,您需要对任何 Google Cloud 配额拥有相同的权限。如需了解详情,请参阅 Google Cloud 配额权限

复制作业

以下限制适用于复制表的 BigQuery 作业。这些限制适用于使用 bq 命令行工具、Cloud Console 或复制类型的 jobs.insert API 方法创建的作业。无论复制作业成功还是失败,所有复制作业都会计入此限额。

限制 默认 备注
每个目标表每天的复制作业数 请参阅每日表操作次数
每天的复制作业数 10 万个作业 您的项目每天最多可运行 10 万个复制作业。
每个目标表每天的跨地区复制作业数 100 个作业 您的项目每天最多可为一个目标表运行 100 个跨地区复制作业。
每天跨地区复制作业数 2000 个作业 您的项目每天最多可运行 2000 个跨地区复制作业。

以下限制适用于复制数据集的情况:

限制 默认 备注
源数据集中的最大表数 2 万个表 一个源数据集最多可以有 2 万个表。
每次运行可复制到同一地区中目标数据集的最大表数 2 万个表 您的项目每次运行可将 2 万个表复制到同一地区中的目标数据集。
每次运行可复制到其他地区中的目标数据集的最大表数 1000 个表 您的项目每次运行时可将 1000 个表复制到不同地区的目标数据集。 例如,如果您为包含 8000 个表的数据集配置了跨地区复制,则 BigQuery Data Transfer Service 会按顺序自动创建 8 次运行。第一次运行会复制 1000 个表。24 小时后,第二次运行复制 1000 个表。此过程将持续进行,直到复制完数据集中的所有表。每个数据集中最多可包含 2 万个表。

数据操纵语言 (DML) 语句

以下限制适用于 BigQuery 数据操纵语言 (DML) 语句:

限制 默认 备注
每天 DML 语句数 无限制 DML 语句计入每日表操作次数(或分区表的每日分区表操作次数)。 但是,您的项目每天可运行的 DML 语句数量不受限制。达到表操作(或分区表操作)次数的每日上限后,非 DML 表操作将收到错误。但是,您可以继续执行 DML 语句,而不会出现错误。
每个表的并发变更 DML 语句数 2 个语句 BigQuery 会为每个表运行最多两个并发变更 DML 语句(UPDATEDELETEMERGE)。表的其他变更 DML 语句将排入队列。
每个表已排队的变更 DML 语句数 20 个语句 一个表最多可有 20 个变更 DML 语句在队列中等待运行。如果您为表提交其他变更 DML 语句,则这些语句会失败。
DML 语句在队列中的最长时间 6 小时 交互式优先级 DML 语句最长可在队列中等待 6 个小时。如果语句在 6 小时后未运行,则会失败。

如需详细了解变更 DML 语句,请参阅 UPDATE, DELETE, MERGE DML 并发

数据集

以下限制适用于 BigQuery 数据集

限制 默认 备注
数据集数量上限 无限制 一个项目可拥有的数据集数量没有限制。
每个数据集的表数 无限制 使用 API 调用时,如果数据集中的表接近 5 万个,则枚举性能会变慢。Cloud Console 最多可为每个数据集显示 5 万个表。
数据集的访问控制列表中的授权视图 2500 个授权视图 数据集的访问控制列表最多可包含 2500 个已获授权的视图。
每个数据集每 10 秒的数据集更新操作次数 5 次操作 您的项目每 10 秒最多可以执行 5 次数据集更新操作。 数据集更新限制包括以下各项执行的所有元数据更新操作:
数据集说明的长度上限 16384 个字符 为数据集添加说明时,说明文本最多可包含 16384 个字符。

导出作业

以下配额适用于从 BigQuery 导出数据的作业,导出方式是使用 bq 命令行工具、Cloud Console 或导出类型的 jobs.insert API 方法。

配额 默认 备注
每天导出的字节数上限 50 TB 您的项目每天最多可导出 50 TB 的数据。
如需每天导出 50 TB 以上的数据,请使用 Storage Read APIEXPORT DATA 语句。
在 Cloud Console 中查看配额

以下限制适用于从 BigQuery 导出数据的作业,导出方式是使用 bq 命令行工具、Cloud Console 或导出类型的 jobs.insert API 方法。

限制 默认 备注
每天的导出次数上限 10 万次导出 您的项目每天最多可以运行 10 万个导出作业。
每次导出的通配符 URI 数量 500 个 URI 一次导出最多可导出 500 个通配符 URI。

加载作业

使用 Cloud Console、bq 命令行工具或加载类型的 jobs.insert API 方法将数据加载到 BigQuery 时,受以下限制约束。

限制 默认 备注
每个表每天的加载作业数 请参阅每天的表操作数上限。失败的加载作业会计入此限额。 加载作业(包括失败的加载作业)会计入目标表每天的表操作次数上限。
每天的加载作业数 10 万个作业 您的项目每天最多可以运行 10 万个加载作业。失败的加载作业会计入此限额。
每个表的列数上限 1 万列 一个表最多可以有 1 万列。
每个加载作业的大小上限 15 TB 所有 CSV、JSON、Avro、Parquet 和 ORC 输入文件的总大小最大可达 15 TB。
作业配置中的源 URI 数量上限 1 万个 URI 一个作业配置最多可以有 1 万个源 URI。
每个加载作业的文件数上限 1000 万个文件 一个加载作业总共可有最多 1000 万个文件,包括与所有通配符 URI 匹配的所有文件。
加载作业的执行时间限制 6 小时 如果加载作业的执行时间超过 6 个小时,则会失败。
Avro:文件数据块的大小上限 16 MB Avro 文件数据块的大小限制为 16 MB。
CSV:单元格大小上限 100 MB CSV 单元格的大小不得超过 100 MB。
CSV:行大小上限 100 MB CSV 行的大小上限为 100 MB。
CSV:文件大小上限 - 已压缩 4 GB 已压缩的 CSV 文件的大小限制为 4 GB。
CSV:文件大小上限 - 未压缩 5 TB 未压缩的 CSV 文件的大小上限为 5 TB。
JSON:行大小上限 100 MB JSON 行的大小上限为 100 MB。
JSON:文件大小上限 - 已压缩 4 GB 已压缩的 JSON 文件的大小上限为 4 GB。
JSON:文件大小上限 - 未压缩 5 TB 未压缩的 JSON 文件的大小上限为 5 TB。

如果您由于频繁更新而经常超出加载作业限制,请改为考虑将数据流式插入到 BigQuery

查询作业

以下配额适用于通过运行交互式查询和计划查询而自动创建的查询作业,以及使用 jobs.query 和查询类型的 jobs.insert API 方法提交的作业:

配额 默认 备注
每天的查询用量 无限制 您的项目每天可以运行无限次查询。
在 Cloud Console 中查看配额
每位用户每天的查询用量 无限制 用户每天可以运行无限次查询。
在 Cloud Console 中查看配额
每天 Cloud SQL 联合查询跨地区字节数 1 TB 如果 BigQuery 查询处理位置与 Cloud SQL 实例位置不同,则查询为跨地区查询。您的项目每天最多可在跨地区查询中运行 1 TB 的数据。请参阅 Cloud SQL 联合查询
在 Cloud Console 中查看配额

以下限制适用于通过运行交互式查询和计划查询而自动创建的查询作业,以及使用 jobs.query 和查询类型的 jobs.insert API 方法提交的作业:

限制 默认 备注
交互式查询的并发速率限制 100 个查询 您的项目最多可以运行 100 个并发交互式查询。 从查询缓存返回结果的查询仅在 BigQuery 确定其属于缓存命中所需的时长内计入此限制。试运行查询不计入此限制。您可以使用 --dry_run 标志指定试运行查询。如需了解保持在此限制内的政策,请参阅排查配额错误
对 Cloud Bigtable 外部数据源执行的交互式查询的并发速率限制 4 个查询 您的项目最多可以对 Bigtable 外部数据源运行 4 个并发查询。
每日查询大小限制 无限制 默认情况下,未设置每日查询大小限制。不过,您可创建自定义配额,限制用户可以查询的数据量。
包含 UDF 的旧版 SQL 查询的并发速率限制 6 个查询 您的项目最多可使用用户定义的函数 (UDF) 运行 6 个并发旧版 SQL 查询。 此限制同时适用于交互式查询和批量查询。 包含 UDF 的交互式查询也会计入交互式查询的并发速率限制。此限制不适用于标准 SQL 查询。
每日目标表更新限制 请参阅每天的表操作数上限 查询作业中的目标表更新会计入目标表每天的最大表操作次数限制。目标表更新包括通过以下方式执行的附加操作和改写操作:使用 Cloud Console 或 bq 命令行工具运行查询,或者调用 jobs.query 和查询类型的 jobs.insert API 方法来运行查询。
查询/脚本执行时间限制 6 小时 查询或脚本最多可执行 6 小时,然后就会失败。 但有时会重试查询。查询最多可以尝试 3 次,每次尝试最多可运行 6 小时。因此,查询的总运行时可能会超过 6 个小时。
每个查询引用的表数上限 1000 个资源 在完全展开后,查询最多可引用 1000 个唯一、唯一视图、唯一用户定义的函数 (UDF) 和唯一的表函数预览版)。此限制包括:
  • 查询直接引用的表、视图、UDF 和表函数。
  • 查询中引用的其他视图/UDF/表函数所引用的表、视图、UDF 和表函数。
  • 通过扩展查询中使用的通配符表或其他引用的视图/UDF/表函数而生成的表。
未解析的旧版 SQL 查询的长度上限 256 KB 未解析的旧版 SQL 查询的长度不得超过 256 KB。如果查询超出此限制,您会收到以下错误:The query is too large. 为了保持在此限制内,请考虑将大型数组或列表替换为查询参数。
未解析的标准 SQL 查询的长度上限 1 MB 未解析的标准 SQL 查询的长度不得超过 1 MB。如果查询超出此限制,您会收到以下错误:The query is too large. 为了保持在此限制内,请考虑将大型数组或列表替换为查询参数。
已解析的旧版和标准 SQL 查询的长度上限 12 MB 已解析查询的长度限制涵盖查询引用的所有视图和通配符表的长度。
标准 SQL 查询参数的数量上限 1 万个参数 标准 SQL 查询最多可以有 1 万个参数。
响应大小上限 10 GB - 已压缩 大小取决于数据的压缩比。实际响应大小可能远大于 10 GB。 将大型查询的结果写入目标表时,不限制最大响应大小。
行大小上限 100 MB 行大小上限是近一个似值,因为该限制基于行数据的内部表示形式。 系统会在执行查询作业时的某些阶段实施行大小上限。
表、查询结果或视图定义中的列数上限 1 万列 表、查询结果或视图定义最多可以有 1 万列。
采用按需价格的并发槽数上限 2000 个槽 使用按需价格,您的项目最多可以有 2000 个并发槽。 单个项目中的所有查询会共享 BigQuery 槽。BigQuery 可能会突破此限制以加快查询速度。 如需查看使用的槽数,请参阅使用 Cloud Monitoring 监控 BigQuery
对于按需价格,每个扫描数据的最大 CPU 用量 每 MiB 扫描数据使用 256 CPU 秒 采用按需价格模式,您的查询可以为每 MiB 扫描数据使用大约 256 CPU 秒。如果您的查询对于正在处理的数据量而言需要使用大量 CPU,则查询会失败并显示 billingTierLimitExceeded 错误。 如需了解详情,请参阅 billingTierLimitExceeded

虽然计划查询使用 BigQuery Data Transfer Service 的功能,但计划查询不是转移作业,并且不受加载作业限制的约束。

行级安全性

以下限制适用于 BigQuery 行级访问权限政策

限制 默认 备注
每个表的行访问权限政策数量上限 100 个政策 一个表最多可以有 100 个行访问权限政策。
每个表的行访问权限政策数量上限 100 个政策 一个查询最多可以访问 100 个行访问权限政策。
每个政策每 10 秒的 CREATE/DROP DDL 语句数量上限 5 个语句 您的项目每 10 秒最多可以对每个行访问权限政策资源执行 5 个 CREATEDROP 语句。
每个表每 10 秒的 DROP ALL ROW ACCESS POLICIES 语句数 5 个语句 您的项目每 10 秒最多可以对每个表执行 5 个 DROP ALL ROW ACCESS POLICIES 语句。
rowAccessPolicies.list 调用次数上限 请参阅所有 BigQuery API 的限制
rowAccessPolicies.getIamPolicy 调用次数上限 请参阅 IAM API 配额

流式插入

以下配额和限制适用于将数据流式插入到 BigQuery。如需了解保持在这些限制内的策略,请参阅排查配额错误

不使用 insertId 字段进行流式插入

如果您在插入行时没有填充 insertId 字段,系统会应用以下限制。如需了解详情,请参阅停用尽力去重功能。使用 BigQuery 时建议采用这种方式,以便获得更高的流式提取配额限制。

限制 默认 备注
每秒字节数上限 1 GB 如果您在插入每一行时没有填充 insertId 字段,则您的项目每秒最多可流式传输 1 GB。 超出此限制会导致 quotaExceeded 错误。

使用 insertId 字段进行流式插入

如果您在插入行时填充了 insertId 字段,系统会应用以下配额。如果超出这些配额,则会收到 quotaExceeded 错误。

配额 默认 备注
useu 多地区位置中每个项目的每秒行数上限 50 万行

如果您为插入的每一行填充了 insertId 字段,则在 us 和 eu 多地区位置中,每个项目的每秒限制将为 50 万行。此配额是给定多地区位置内的累计式配额。换句话说,对于多地区位置内一个给定项目的所有表,每秒流式插入的总行数不能超过 50 万。此外,每个表的每秒限制为 10 万行。

超过每个项目的上限或每个表的上限将导致 quotaExceeded 错误。

所有其他位置的每个项目的每秒行数上限 10 万行

如果您为插入的每一行填充了 insertId 字段,那么除 useu 多地区位置外,所有位置的每个项目或每个表的限制均为每秒 10 万行。此配额是给定地区内的累计式配额。换句话说,对于某地区内一个给定项目的所有表,每秒流式插入的总行数不能超过 10 万。

超过此数量将导致 quotaExceeded 错误。

每个表每秒的行数上限 10 万行

如果您为插入的每一行填充了 insertId 字段,则每个表每秒的限制将为 10 万行。

超过此数量将导致 quotaExceeded 错误。

每秒字节数上限 100 MB

如果您为插入的每一行填充了 insertId 字段,每个表每秒的限制将为 100 MB。

超过此数量将导致 quotaExceeded 错误。

所有流式插入

无论您是否填充了 insertId 字段,以下额外的流式插入限制都适用:

限制 默认 备注
行大小上限 10 MB 超过此值将导致 invalid 错误。
HTTP 请求大小限制 10 MB

超过此值将导致 invalid 错误。

在内部,请求将从 HTTP JSON 转换为内部数据结构。该转换后的数据结构有自己的强制性大小限制。生成的内部数据结构的大小很难预测,但如果您将 HTTP 请求保持在 10 MB 或更小,达到此内部限制的机率就会很低。

每个请求的行数上限 5 万行 我们建议最多不要超过 500 行。批处理在一定限度内可以提高性能和吞吐量,但会影响每个请求的延迟时间。 每个请求的行数过少,每个请求的开销可导致提取效率低下。每个请求的行数过多,吞吐量可能会下降。用具有代表性的数据(架构和数据大小)进行实验来确定数据的理想批量大小。
insertId 字段长度 128 个字符 超过此值将导致 invalid 错误。

如果您的项目需要更多流式插入配额,您可以停用尽力去重功能。如需额外的流式插入配额,请参阅申请增加配额

表函数

以下限制适用于 BigQuery 表函数

限制 默认 备注
表函数名称的长度上限 256 个字符 表函数的名称不得超过 256 个字符。
参数名称的长度上限 128 个字符 表函数参数的名称最多可包含 128 个字符。
参数数量上限 256 个参数 表函数最多可以有 256 个参数。
表函数引用链的深度上限 16 个引用 表函数引用链最多可以有 16 层引用。
类型为 STRUCT 的参数或输出的深度上限 15 层 表函数的 STRUCT 参数最多可达 15 层深度。同样,表函数输出中的 STRUCT 记录最高可达 15 层深度。
每个表函数中 STRUCT 类型的参数或返回表中的字段数上限 1024 个字段 表函数的 STRUCT 参数最多可包含 1024 个字段。 同样,表函数输出中的 STRUCT 记录最多可包含 1024 个字段。
返回表中的列数上限 1024 列 表函数返回的表最多可包含 1024 列。
返回表列名称的长度上限 128 个字符 返回的表中的列名称不得超过 128 个字符。
每个表函数每 10 秒的更新次数上限 5 个更新 您的项目每 10 秒最多可更新表函数 5 次。

所有表

以下限制适用于所有 BigQuery 表。

限制 默认 备注
列说明的长度上限 1024 个字符 为列添加说明时,说明文本最多只能包含 1024 个字符。
嵌套记录的深度上限 15 层 RECORD 类型的列可以包含嵌套的 RECORD 类型(也称为子记录)。嵌套深度上限为 15 层。 此限制与记录是基于标量还是基于数组(重复)无关。

外部表

以下限制适用于以 Parquet、ORC、Avro、CSV 或 JSON 格式将数据存储在 Cloud Storage 中的 BigQuery 表:

限制 默认 备注
每个外部表的源 URI 数量上限 1 万个 URI 每个外部表最多可以有 1 万个源 URI。
每个外部表的文件数量上限 1000 万个文件 一个外部表最多可包含 1000 万个文件,包括与所有通配符 URI 匹配的所有文件。
每个外部表存储在 Cloud Storage 中的数据的大小上限 600 TB 一个外部表的所有输入文件最多可以包含 600 TB。此限制适用于存储在 Cloud Storage 上的文件大小;此大小与查询价格公式中使用的大小不同。 对于外部分区表,系统会在分区删减后应用此限制。

分区表

以下限制适用于 BigQuery 分区表

分区限制适用于所有加载作业复制作业查询作业的总和,这些作业附加到或覆盖目标分区,或者使用 DML DELETEINSERTMERGETRUNCATE TABLEUPDATE 语句将数据写入表中。

DML 语句计数会计入分区限制,但不受其限制。换句话说,计入该限制的每日操作总数包括 DML 语句计数,但 DML 语句不会因为该限制而失败。例如,如果运行 500 个将数据附加到 mytable$20210720 的复制作业和 1000 个将数据附加到 mytable$20210720 的查询作业,就会达到分区操作的每日上限。

单个作业可能会影响多个分区。例如,DML 语句可以更新多个分区中的数据(包括注入时间表和分区表)。查询作业和加载作业也可以写入多个分区,但仅限于分区表。

BigQuery 在确定某个作业消耗的限额量时,会使用受该作业影响的分区数量。流式插入不会影响此限额。

如需了解保持在分区表限制内的策略,请参阅排查配额错误

限制 默认 备注
每个分区每天的最大修改数 1500 次操作

您的项目每天最多可对特定分区进行 1500 次更新,无论更新是将数据附加到该分区,还是截断分区。

每个分区表的分区数上限 4000 个分区 每个分区表最多可以有 4000 个分区。如果超过此限制,请考虑将聚簇和分区一起使用,或者改用分区。
单个作业可修改的分区数上限 4000 个分区 每个作业操作(查询或加载)最多可影响 4000 个分区。 BigQuery 会拒绝任何尝试修改 4000 个以上分区的查询或加载作业。
每个注入时间分区表每天的分区修改数 5000 次修改 您的项目每天最多可以对注入时间分区表进行 5000 次分区修改。
每个列分区表每天的分区修改次数 3 万次修改

您的项目每天最多可以对列分区表进行 3 万次分区修改。

每个表每 10 秒的分区操作数 50 次操作 您的项目每 10 秒最多可以为每个分区表运行 50 次分区操作。
范围分区的可能范围数 1 万个范围 范围分区表最多可以有 1 万个可能的范围。 此限制适用于创建表时的分区规范。创建表后,此限制也适用于实际分区数。

标准表

以下限制适用于 BigQuery 标准

限制 默认 备注
每天表操作次数 1500 次操作

您的项目每天最多可以为每个表执行 1500 次,无论该操作是将数据附加到表还是截断表。此限制包括所有加载作业复制作业查询作业的总数,这些作业对目标表执行附加或覆盖操作,或者使用 DML DELETEINSERTMERGETRUNCATE TABLEUPDATE 语句将数据写入表中。

DML 语句计数会计入此限制,但不受此限制约束。换句话说,计入此限制的每日操作总数包括 DML 语句计数,但 DML 语句不会因为该限制而失败。 例如,如果运行 500 个将数据附加到 mytable 的复制作业和 1000 个将数据附加到 mytable 的查询作业,就会达到限额。

如需了解每天为分区表执行的表操作数,请参阅每天分区表操作次数

表元数据更新操作的速率上限 每 10 秒 5 次操作 您的项目每表每 10 秒最多可以执行 5 次表元数据更新操作。此限制适用于所有由以下项执行的表元数据更新操作: 此限制还涵盖向目标表附加数据或覆盖目标表的所有加载作业、复制作业和查询作业的总操作数。此限制不适用于 DML 操作。

如果超出此限制,您会收到类似于 Exceeded rate limits: too many table update operations for this table 的错误消息。 这是一个暂时性错误,您可以使用指数退避算法重试。

如需确定计入此限制的操作,您可以检查日志

每个表的列数上限 1 万列 每个表、查询结果或视图定义最多可以有 1 万列。

表快照

以下限制适用于 BigQuery 表快照

限制 默认 备注
并发表快照作业数上限 100 个作业 您的项目最多可以运行 100 个并发表快照作业。
每天的表快照作业数上限 5 万个作业 您的项目每天最多可以运行 5 万个表快照作业。
每个表快照每天的作业数上限 50 个作业 您的项目每天最多可为每个表快照运行 50 个作业。
每个表快照每 10 秒的元数据更新数上限 5 个更新 您的项目每 10 秒最多可更新 5 次表快照的元数据。

UDF

以下限制适用于 BigQuery SQL 查询中的临时性和永久性用户定义的函数 (UDF)

限制 默认 备注
每行的最大输出数 5 MB 处理单行数据时,JavaScript UDF 可以输出的最大数据量约为 5 MB。
使用 JavaScript UDF 的并发旧版 SQL 查询数上限 6 个查询 您的项目最多可以有 6 个在 JavaScript 中包含 UDF 的并发旧版 SQL 查询。 此限制包括交互式查询和批量查询。 包含 UDF 的交互式查询也会计入交互式查询的并发速率限制。 此限制不适用于标准 SQL 查询。
每个查询的 JavaScript UDF 资源数量上限 50 个资源 一个查询作业最多可包含 50 个 JavaScript UDF 资源,例如内嵌代码 blob 或外部文件。
内嵌代码 blob 的大小上限 32 KB UDF 中的内嵌代码 blob 大小上限为 32 KB。
每个外部代码资源的大小上限 1 MB 每个 JavaScript 代码资源的大小上限为 1 MB。

以下限制适用于永久性 UDF:

限制 默认 备注
UDF 名称的长度上限 256 个字符 UDF 名称不得超过 256 个字符。
参数数量上限 256 个参数 一个 UDF 最多可以有 256 个参数。
参数名称的长度上限 128 个字符 UDF 参数名称不得超过 128 个字符。
UDF 参考链的深度上限 16 个引用 一个 UDF 引用链最多可以有 16 层引用。
STRUCT 类型参数或输出的深度上限 15 层 STRUCT 类型的 UDF 参数或输出最多可达 15 层深度。
每个 UDF 的 STRUCT 类型参数或输出中的字段数上限 1024 个字段 UDF 中 STRUCT 类型参数和输出最多可以有 1024 个字段。
CREATE FUNCTION 语句中的 JavaScript 库数量上限 50 个库 一个 CREATE FUNCTION 语句最多可包含 50 个 JavaScript 库。
包含的 JavaScript 库路径的长度上限 5000 个字符 UDF 中包含的 JavaScript 库路径的长度最多为 5000 个字符。
每个 UDF 每 10 秒的更新速率上限 5 个更新 您的项目每 10 秒最多可更新 UDF 5 次。

视图

以下限制适用于 BigQuery 视图

限制 默认 备注
嵌套视图层数上限 16 层 BigQuery 最多支持 16 层嵌套视图。如果嵌套层数超过 16 层,系统会返回 INVALID_INPUT 错误。
用于定义视图的标准 SQL 查询长度上限 25.6 万个字符 定义视图的标准 SQL 查询的文本最多可包含 25.6 万个字符。
每个数据集的授权视图数上限 2500 个授权视图 数据集的访问控制列表最多可以包含 2500 个授权视图

BigQuery API

本部分介绍适用于所有 BigQuery API 请求的配额和限制,以及适用于特定类型的 API 请求的配额和限制。

所有 BigQuery API

以下配额适用于所有 BigQuery API 请求:

配额 默认 备注
每日请求数 无限制 您的项目每天可发送的 BigQuery API 请求数不受限制。
在 Cloud Console 中查看配额
以下限制适用于所有 [BigQuery API](https://cloud.google.com/bigquery/docs/reference/rest) 请求:
限制 默认 备注
每位用户每秒的 API 请求数上限 100 个请求 如果某用户每秒发出超过 100 个请求,则可能会受到系统的限制。 此限制不适用于流式插入
每位用户的并发 API 请求数上限 300 个请求 如果某用户发出超过 300 个并发请求,则可能会受到系统的限制。 此限制不适用于流式插入。
请求标头大小上限 16 KiB BigQuery API 请求最大可为 16 KiB(包括请求网址和所有标头)。此限制不适用于请求正文,例如在 POST 请求中。

jobs.get 请求

以下限制适用于 jobs.get API 请求:

限制 默认 备注
每秒 jobs.get 请求数上限 1000 个请求 您的项目每秒最多可以发出 1000 个 jobs.get 请求。

jobs.query 请求

以下限制适用于 jobs.query API 请求:

限制 默认 备注
jobs.query 响应大小上限 10 MB 默认情况下,jobs.query 在每页结果中返回的数据行数没有上限,但响应大小不得超过 10 MB。您可以使用 maxResults 参数更改要返回的行数。

projects.list 请求

以下限制适用于 projects.list API 请求:

限制 默认 备注
每秒 projects.list 请求数上限 2 个请求 您的项目每秒最多可以发出两个 projects.list 请求。

tabledata.list 请求

以下配额适用于 tabledata.list 请求。其他 API(包括 jobs.getQueryResults 以及从 jobs.queryjobs.insert 提取结果)也可以使用此配额。

配额 默认 备注
每分钟表数据列表字节数 3.6 GB 您的项目每分钟最多可以返回 3.6 GB 的表行数据。此配额适用于包含正在读取的表的项目。
在 Cloud Console 中查看配额

以下限制适用于 tabledata.list 请求。

限制 默认 备注
每秒 tabledata.list 请求数上限 1000 个请求 您的项目每秒最多可以发出 1000 个 tabledata.list 请求。
tabledata.list 请求每秒返回的行数上限 15 万行 使用 tabledata.list 请求,您的项目每秒最多可以返回 15 万行。该限制适用于从中读取数据的表所在的项目。
每个 tabledata.list 响应的行数上限 10 万行 一个 tabledata.list 调用最多可以返回 10 万个表行。 如需了解详情,请参阅通过 API 对结果进行分页

tables.insert 请求

tables.insert 方法可在数据集内创建一个新的空表。以下限制适用于 tables.insert 请求。此限制涵盖创建表(例如 CREATE TABLE)的 SQL 语句和将结果写入目标表的查询

限制 默认 备注
每秒 tables.insert 请求数上限 10 个请求 您的项目每秒最多可以发出 10 个 tables.insert 请求。

BigQuery Connection API

以下配额适用于 BigQuery Connection API 调用:

配额 默认 备注
每分钟读取请求数 1000 个请求 您的项目每分钟最多可以向读取连接数据的 BigQuery Connection API 方法发出 1000 个请求。
在 Cloud Console 中查看配额
每分钟写入请求数 每分钟 100 个请求 您的项目每分钟最多可以向用于创建或更新连接的 BigQuery Connection API 方法发出 100 个请求。
在 Cloud Console 中查看配额

BigQuery Reservation API

以下配额适用于 BigQuery Reservation API

配额 默认 备注
每分钟每个地区的请求数 100 个请求 在每个地区中,您的项目每分钟最多可以对 BigQuery Reservation API 方法进行 100 次调用。
在 Cloud Console 中查看配额
每个地区每分钟的 SearchAllAssignments 调用次数 100 个请求 在每个地区中,您的项目每分钟最多可以对 SearchAllAssignments 方法进行 100 次调用。
在 Cloud Console 中查看配额
每位用户每分钟在每个地区对 SearchAllAssignments 的请求数 10 个请求 在每个地区中,每位用户每分钟最多可以对 SearchAllAssignments 方法进行 10 次调用。
在 Cloud Console 中查看配额
(在 Google Cloud Console 搜索结果中,搜索每用户。)
每个地区(美国地区和欧盟地区除外)中的槽总数 0 个槽 您在每个地区中可以使用 Google Cloud Console 购买的 BigQuery 槽数上限。
在 Cloud Console 中查看配额
欧盟地区的槽总数 1000 个槽 您在欧盟多地区位置可以使用 Google Cloud Console 购买的 BigQuery 槽数上限。
在 Cloud Console 中查看配额
美国地区的槽总数 4000 个槽 您在美国多地区位置可以使用 Google Cloud Console 购买的 BigQuery 槽数上限。
在 Cloud Console 中查看配额

IAM API

当您在 BigQuery 中使用 Identity and Access Management 功能检索和设置 IAM 政策以及测试 IAM 权限时,需遵循以下配额。

配额 默认 备注
每分钟的 IamPolicy 请求数 3000 个请求 您的项目每秒最多可以发出 3000 个 IAM 请求。
在 Cloud Console 中查看配额
每位用户每分钟的 IamPolicy 请求数 1500 个请求 每位用户每分钟最多可以发出 1500 个 IAM 请求。
在 Cloud Console 中查看配额

Storage Read API

以下配额适用于 BigQuery Storage Read API 请求:

配额 默认 备注
每位用户每分钟的读取数据平面请求数 5000 个请求 对于每个项目,每位用户每分钟最多可以执行 5000 次 ReadRows 调用。
在 Cloud Console 中查看配额
每位用户每分钟的读取控制层面请求数 5000 个请求 对于每个项目,每位用户每分钟最多可以执行 5000 次 Storage Read API 元数据操作调用。元数据调用包括 CreateReadSessionSplitReadStream 方法。
在 Cloud Console 中查看配额

以下限制适用于 BigQuery Storage Read API 请求:

限制 默认 备注
行/过滤条件长度上限 1 MB 使用 Storage Read API CreateReadSession 调用时,每行或每个过滤条件的最大长度限制为 1 MB。

Storage Write API

以下配额适用于 Storage Write API预览版)请求:

配额 默认 备注
每分钟的 CreateWriteStream 请求数 100 个请求 您的项目每分钟最多可以对 CreateWriteStream 进行 100 次调用。如果您因为超出此限制而收到错误,请使用指数退避算法重试操作。此外,请尝试递增调用 CreateWriteStream 的间隔。默认流不受此配额的限制。如果您不需要针对提交模式使用“正好一次”语义,请考虑使用默认流。
在 Cloud Console 中查看配额
每分钟的 FlushRows 请求数 1 万个请求 您的项目每分钟最多可以对 FlushRows 方法进行 1 万次调用。
在 Cloud Console 中查看配额
待处理的字节数 100 GB 在提交数据流之前,您的项目可以在待处理模式下最多写入 100 GB 的数据。
在 Cloud Console 中查看配额

以下限制适用于 Storage Write API预览版)请求:

限制 默认 备注
并发连接数 1000 个连接 您的项目最多可以有 1000 个并发连接。

配额用量上限

如需了解如何通过指定比默认值小的配额来限制特定资源的用量,请参阅为用量设置上限

问题排查

如需了解如何排查配额和限制相关的错误,请参阅排查 BigQuery 配额错误