本页面介绍 Cloud Spanner 在生产环境中的配额和限制。配额与限制的区别是限制不能调整,而配额可以根据您的请求而增加。 配额和限制在 Google Cloud Console 中可互换使用。如果 Google Cloud Console 显示不允许修改配额,则实际上是无法调整的限制。
配额和限制值随时可能更改。
查看您的配额
如需查看您项目中的当前资源配额,请使用 Google Cloud Console:
增加您的配额
随着您的 Cloud Spanner 使用量逐步增加,您可以相应地增加配额。如果您预计后续用量会显著增加,则应提前几天提出申请,以确保您的配额足够使用。
转到控制台中的配额页面。
选择服务下拉列表中的 Cloud Spanner API。
如果找不到 Cloud Spanner API,则说明 Cloud Spanner API 尚未启用。
选择要更改的配额。
点击修改配额。
填写您的姓名、电子邮件和电话号码,然后点击下一步。
填写您的配额申请,然后点击提交请求。
您将在提交申请后的 48 小时内收到 Cloud Spanner 团队的回复。
实例限制
值 | 限制 |
---|---|
实例 ID 长度 | 2 到 64 个字符 |
数据库限制
值 | 限制 |
---|---|
每个实例的数据库数 |
|
数据库 ID 长度 | 2 到 30 个字符 |
存储空间使用量1 |
备份会单独存储,不计入此限额。如需了解详情,请参阅存储空间利用率指标。 请注意,Cloud Spanner 按实例内使用的实际存储空间收费,而不是按总可用存储空间计费。 |
备份和恢复限制
值 | 限制 |
---|---|
每个数据库正在进行的“创建备份”操作数 | 1 |
每个实例正在进行的“恢复数据库”操作数(在恢复的数据库实例中,而不是在备份中) | 1 |
备份的最长保留时间 | 1 年(包括闰年多出的一天) |
架构限制
DDL 语句
值 | 限制 |
---|---|
单个架构更改的 DDL 语句大小 | 10 MB |
数据库整个架构的 DDL 语句大小(由 GetDatabaseDdl 返回) |
10 MB |
表
值 | 限制 |
---|---|
每个数据库的表数 | 5,000 |
表名称长度 | 1 到 128 个字符 |
每个表的列数 | 1024 |
列名称长度 | 1 到 128 个字符 |
每个单元格的数据大小 | 10 MB |
表键中的列数 | 16 包括与任何父表共享的键列 |
表交错深度 | 7 包含子表的顶层表的深度为 1。 包含孙表的顶层表的深度为 2,以此类推。 |
表键或索引键的总大小 | 8 KB 包括构成相应键的所有列的大小 |
非键列的总大小 | 1600 MB 包括表的所有非键列的大小 |
索引
值 | 限制 |
---|---|
每个数据库的索引数 | 1 万 |
每个表的索引数 | 32 |
索引名称长度 | 1 到 128 个字符 |
索引键中的列数 | 16 编入索引的列的数量(STORING 列除外)加上基表中主键列的数量 |
视图
值 | 限制 |
---|---|
每个数据库的视图数 | 5,000 |
数据视图名称长度 | 1 到 128 个字符 |
嵌套深度 | 10 对于引用其他视图的视图,其嵌套深度为 1。对于引用其他视图并且该视图又引用另外视图的视图,其嵌套深度为 2,以此类推。 |
查询限制
值 | 限制 |
---|---|
一个 GROUP BY 子句中的列数 |
1000 |
函数调用次数 | 1000 |
联接 | 20 |
嵌套函数调用次数 | 75 |
嵌套 GROUP BY 子句数量 |
35 |
嵌套子查询表达式数量 | 25 |
嵌套子选择语句数 | 60 |
参数 | 950 |
查询语句长度 | 1 百万个字符 |
STRUCT 字段数 |
1000 |
子查询表达式子项数 | 50 |
查询中的 union 数 | 200 |
创建、读取、更新和删除数据的限制
值 | 限制 |
---|---|
提交大小(包括索引和变更流) | 100 MB |
每个会话的并发读取数 | 100 |
每次提交包含的更改数(包括索引)2 | 20000 |
每个数据库的并发分区 DML 语句数 | 20000 |
管理限制
值 | 限制 |
---|---|
管理操作的请求大小3 | 1 MB |
管理操作的速率限制4 | 每位用户每个项目每秒 5 次 (按 100 秒计算得到的平均值) |
请求限制
值 | 限制 |
---|---|
请求大小(提交除外)5 | 10 MB |
更改数据流限制
值 | 限制 |
---|---|
按数据库更改流 | 10 |
更改观察任何指定列的数据流6 | 3 |
每个变更流数据分区的并发读取器数量7 | 5 |
备注
1.为了保证数据库访问的高可用性和低延时,Cloud Spanner 根据实例的计算容量定义了存储限制:
- 对于小于 1 个节点(1000 个处理单元)的实例,Cloud Spanner 会为数据库中的每 100 个处理单元分配 409.6 GB 的数据。
- 对于具有 1 个节点或更大节点的实例,Cloud Spanner 会为每个节点分配 4 TB 的数据。
例如,如需为 600 GB 的数据库创建实例,您需要将其计算容量设置为 200 个处理单元。在数据库扩容到超过 819.2 GB 之前,这种计算容量将使实例低于上限。数据库达到此大小后,您需要再添加 100 个处理单元,以允许数据库增大。否则,对数据库的写入可能会被拒绝。如需了解详情,请参阅数据库存储空间利用率建议。
为了获得顺畅的增长体验,请在数据库数量达到上限之前添加计算容量。
2. 在为插入和更新操作计算更改数时,需要乘以受影响的列数,且主键列始终会受影响。例如,如果向五个列中插入值,则插入一条新记录的操作会被计为五项更改。如果记录具有两个主键列,则更新该记录中的三列也可能会被计为五项变更。无论受影响的列有多少个,删除操作和删除某个范围的操作都计为一项更改。无论交错式子行有多少个,从具有 ON DELETE
CASCADE
注释的父表中删除一行也计为一项更改。有一个例外,如果对要删除的行定义了二级索引,系统将单独计算二级索引的更改。例如,如果一个表有 2 个二级索引,则删除该表中的一系列行会计为该表的 1 项更改,外加对删除的每一行的 2 项更改,因为二级索引中的行可能分散在键空间,使得 Cloud Spanner 无法对二级索引调用单个删除范围的操作。二级索引包含外键和支持性索引。
如需查找事务的变更计数,请参阅检索事务的提交统计信息。
变更流不会添加任何会计入此限制的变更。
3.针对管理操作请求的限制不适用于提交、备注 5 中列出的请求和架构更改。
4.此速率限制适用于对 Admin API 的所有调用,其中包括对针对实例、数据库或备份的长时间运行的操作进行轮询的调用。
5. 此限制适用于以下操作请求:创建数据库、更新数据库、读取、流式读取、执行 SQL 查询以及执行流式 SQL 查询。
6.监控整个表或数据库的更改流会隐式监视该表或数据库中的每一列,从而计入此限制。
7. 此限制适用于同一更改流分区的并发读取器,无论这些读取器是 Dataflow 流水线还是直接 API 查询。