配额和限制

本页面介绍 Cloud Spanner 在生产环境中的配额和限制。配额与限制的区别是限制不能调整,而配额则可以根据您的请求而增加。

配额和限制值随时可能更改。

查看您的配额

如需查看您项目中当前的资源配额,请使用 Google Cloud Console:

查看您的配额

增加您的配额

随着您的 Cloud Spanner 使用量逐步增加,您可以相应地增加配额。如果您预计后续用量会显著增加,则应提前几天提出申请,以确保您的配额足够使用。

  1. 转到 Cloud Console 中的配额页面。

    转到“配额”页面

  2. 选择服务下拉列表中的 Cloud Spanner API

    如果找不到 Cloud Spanner API,则说明 Cloud Spanner API 尚未启用。

  3. 选择要更改的配额。

  4. 点击修改配额

  5. 填写您的姓名、电子邮件和电话号码,然后点击下一步

  6. 填写您的配额申请,然后点击提交请求

您将在提交申请后的 48 小时内收到 Cloud Spanner 团队的回复。

实例限制

限制
实例 ID 长度 2 到 64 个字符

数据库限制

限制
每个实例的数据库数 100
数据库 ID 长度 2 到 30 个字符
每个节点的存储空间大小 2 TB1

备份和恢复限制

限制
每个数据库正在进行的“创建备份”操作数 1
每个实例正在进行的“恢复数据库”操作数(在恢复的数据库实例中,而不是在备份中) 1
备份的最长保留时间 1 年(包括闰年多出的一天)

架构限制

DDL 语句

限制
单个架构更改的 DDL 语句大小 10 MB
数据库整个架构的 DDL 语句大小(与 GetDatabaseDdl 返回的相同) 10 MB

限制
每个数据库的表数 2560
表名称长度 1 到 128 个字符
每个表的列数 1024
列名称长度 1 到 128 个字符
每列的数据大小 10 MB
表键中的列数

16

包括与任何父表共享的键列

表交错深度

7

包含子表的顶层表的深度为 1。

包含孙表的顶层表的深度为 2,以此类推。

表键或索引键的总大小

8 KB

包括构成相应键的所有列的大小

每行的数据大小

4 GB

包含顶层行及其所有交错的子行和索引行

索引

限制
每个数据库的索引数 5120
每个表的索引数 32
索引名称长度 1 到 128 个字符
索引键中的列数

16

编入索引的列的数量(STORING 列除外)加上基表中主键列的数量

查询限制

限制
一个 GROUP BY 子句中的列数 1000
函数调用次数 1000
联接数 15
嵌套函数调用次数 75
嵌套 GROUP BY 子句数量 35
嵌套子查询表达式数量 25
嵌套子选择语句数 60
参数数量 950
查询语句长度 1 百万个字符
STRUCT 字段数 1000
子查询表达式子项数 40
查询中的 union 数 200

创建、读取、更新和删除数据的限制

限制
提交大小(包括索引) 100 MB
每个会话的并发读取数 100
每次提交包含的更改数(包括索引)2 20000
每个数据库的并发分区 DML 语句数 20000

管理限制

限制
管理操作的请求大小3 1 MB
管理操作的速率限制4

每位用户每个项目每秒 5 次

(按 100 秒计算得到的平均值)

请求限制

限制
请求大小(提交除外)5 10 MB

备注

1.为了保证数据库访问的高可用性和低延时,Cloud Spanner 要求为数据库中每 2 TB 的数据配备 1 个节点。例如,假设您的实例有 1 个数据库,其中存储了 3.5 TB 的数据,则您至少需预配 2 个节点。只要数据库大小不超过 4 TB,这些节点就可以确保实例符合限制。在您的数据库达到此大小之后,您需要再添加一个节点,以允许数据库继续增长。否则,对该数据库执行的写入操作将失败。为了获得平稳顺畅的扩容体验,请在数据库大小达到此限制之前添加节点。

2. 在为插入和更新操作计算更改数时,需要乘以受影响的列数。例如,如果向五个列中插入值,则插入一条新记录的操作会被计为五项更改。无论受影响的列有多少个,删除操作和删除某个范围的操作都计为一项更改。无论交错式子行有多少个,从具有 ON DELETE CASCADE 注释的父表中删除一行也计为一项更改。有一个例外,如果对要删除的行定义了二级索引,系统将单独计算二级索引的更改。例如,如果一个表有 2 个二级索引,则删除该表中的一系列行会计为该表的 1 项更改,外加对删除的每一行的 2 项更改,因为二级索引中的行可能分散在键空间,使得 Cloud Spanner 无法对二级索引调用单个删除范围的操作。二级索引包含外键和支持性索引

3.针对管理操作请求的限制不适用于提交、备注 5 中列出的请求和架构更改。

4. 此速率限制适用于对 Admin API 的所有调用,其中包括用于对针对实例、数据库或备份的长时间运行的操作进行轮询的调用。

5. 此限制适用于以下操作请求:创建数据库、更新数据库、读取、流式读取、执行 SQL 查询以及执行流式 SQL 查询。