本页面提供有关 Cloud SQL 配额和限制的信息。 配额应用于项目级别;限制应用于实例或项目级别,因具体限制而异。
配额
配额用于限制您的 Google Cloud 项目可使用的 Google Cloud 资源的数量。Cloud SQL 是此类资源的一个示例。
对于 Cloud SQL,有以下功能的系统具有配额:
- 监控 Cloud SQL 实例的使用情况或消耗情况
- 出于某些原因限制这些实例的消耗量,包括确保公平性和减少使用量高峰
- 维护可自动强制执行规定限制的配置
- 提供更改配额或请求更改配额的方法
超过配额时,在大多数情况下,系统会立即阻止对相关实例的访问,并且您尝试执行的任务将失败。配额应用于每个 Google Cloud 项目,并由使用该项目的所有实例共享。
用于检查和增加配额的权限
如需查看和增加配额,您需要拥有以下权限:
serviceusage.quotas.get:
查看您的配额serviceusage.quotas.update:
增加您的配额
默认情况下,这些权限包含在基本 IAM 角色 Editor 和 Owner 以及预定义的 Quota Administrator 角色中。如果您需要更多权限,请与您的配额管理员联系。
查看您的配额
如需查看项目中资源的当前配额,请转到 Google Cloud 控制台中的配额页面,并过滤出 Cloud SQL Admin API。这些配额仅适用于 API 调用;它们不包含数据库查询。
增加您的配额
随着您的 Google Cloud 使用量逐步增加,您的配额可能会相应地增加。如果您预计后续用量会显著增加,请提前几天提出申请,以确保您的配额足够使用。
申请增加配额无需付费。只有当您使用了更多的资源时,费用才会增加。
如需增加配额,请按以下步骤操作:
在 Google Cloud 控制台中,转到配额页面。
过滤出 Cloud SQL Admin API 服务。
如果您没有看到此服务,请启用 Cloud SQL Admin API。
选中要更改的配额旁边的复选框,然后点击修改配额。
对于您选择的每个配额,请在 New limit(新限制)字段中输入所需限制的值。
在 Reason description(原因说明)字段中,输入您申请增加配额的原因,然后点击完成。
点击下一步。
填写您的姓名、电子邮件地址和电话号码,然后点击提交请求。
如果您在增加配额时遇到问题,请提交支持请求。
资源配额如何补充
每日配额每天在美国太平洋时间零点补充。
配额和资源可用性
资源配额是您可以创建的特定类型资源的最大数量(如果这些资源的可用数量足够)。配额不能保证资源随时可用。如果某个资源在您所在的区域实际上不可用,则您无法创建该类型的新资源,即使您的项目中仍有剩余配额。
速率配额
Cloud SQL 支持速率配额(也称为速率限制或 API 配额)。速率配额用于定义可以向 Cloud SQL Admin API 发出的请求数量。
每个速率配额对应于某个类别(由一个或多个 Cloud SQL Admin API 方法组成)的所有请求。速率配额会在特定于 Cloud SQL 的时间间隔(例如每分钟的 API 请求数量)之后重置。
使用 gcloud CLI 或 Google Cloud 控制台时,您是在向 Cloud SQL Admin API 发出请求,这些请求将计入您的速率配额。如果您使用服务账号访问该 API,则这些请求也会计入您的速率配额。
Cloud SQL 会以 60 秒为时间间隔,自动强制执行并重新填充速率配额。如果您的项目在 60 秒内达到速率配额限制,则必须等待配额重新填充,然后才能在该类别中发出更多请求。如果您的项目超出此限制,您会收到 HTTP 429
状态代码和 rateLimitExceeded
原因。
Cloud SQL Admin API 分为以下几个类别:
- 连接:查找连接到 Cloud SQL 数据库所需的值。
- 获取:检索资源(例如实例、操作或备份)的相关信息。
- 列出:列出资源。
- 更改:创建、修改和删除资源。
- 每个区域的默认值:与 Cloud SQL 实例交互,而无需连接、检索、列出或更改该实例。
- 默认值:列出 Cloud SQL 实例的数据库标志和机器类型(层级)。此类别中的 API 是全球 API。
Cloud SQL 按每分钟、每个用户和每个区域对每个类别实施速率配额。对于这些属性的每个唯一组合,Cloud SQL 都会实施单独的速率限制。
Cloud SQL Admin API 会生成详细指标,帮助您跟踪 API 使用情况、监控 Cloud SQL 实例和 API 的性能,以及发现实例与 API 之间的问题。如需了解详情,请参阅监控 API 使用量。
下表提供了有关每个类别的指标、API 和默认限制的信息:
限制
某些 Cloud SQL 资源的限额不会定期补充,也不会在 Google Cloud 控制台中的“配额”页面上显示。其中一些限制是可以增加的,另一些则不能。
可配置的限额
每个项目的实例数
默认情况下,每个项目最多可以有 1000 个实例,但在某些情况下最多只能有 100 个实例。如需请求增加配额,请提交支持请求。读取副本会被计为实例。
我们建议您将实例计数分布到多个项目中,以减少对配额增加请求的依赖。这有助于避免发生阻塞。
并发连接数上限
MySQL
您可以使用
max_connections
标志配置连接数限额。MySQL 最多支持 32,000 个连接。您可以连接到数据库并运行以下命令来了解实例的连接数限额:SHOW VARIABLES LIKE "max_connections";
PostgreSQL
您可以使用 max_connections
标志配置连接数限额。创建 Cloud SQL for PostgreSQL 实例时,机器类型配置设置会自动根据您选择的核心数量调整可用的内存大小范围。这也会影响为实例设置的初始默认连接数限额。
您可以连接到数据库并运行以下命令来查看实例的连接数限额:SELECT * FROM pg_settings WHERE name = 'max_connections';
副本上的值必须大于或等于主实例上的值。在主实例上所做的更改会传播到以下副本:其值小于主实例的新值的副本,或者尚未更改默认值的副本。
如果主实例的值为 default
,则副本的值无法更改。如需更改副本的值,请先将主实例的值设置为整数。
SQL Server
允许的实际用户连接数取决于您使用的 SQL Server 版本,以及您的应用或应用和硬件的限制。SQL Server 最多支持 32767 个用户连接。
如需了解如何在 SQL Server 中配置用户连接数,请参阅参考文档。
注意事项
Cloud SQL 连接器的配额用量
Cloud SQL 身份验证代理和其他 Cloud SQL 连接器使用 Cloud SQL Admin API 的配额。Cloud SQL 连接器的工作方式是大约每小时运行一次刷新操作。此刷新操作会进行两次 API 调用。一次调用用于检索实例元数据,另一次调用用于检索临时证书。
配额使用量的计算方式如下:
Quota usage = connector processes running * instances * 2 API calls per hour
例如,如果您有三个进程正在运行一个连接器,并且该连接器配置为连接到两个 Cloud SQL 实例,并且在一小时内进行了两次 API 调用,则您的配额用量为 12(3 个进程 * 2 个实例 * 2 次 API 调用)。
如果您刚开始使用 Cloud SQL,则根据上述公式,您应注意以下几点:
纵向扩容新的数据库客户端的速度
添加更多实例的速度
为每个应用使用不同的服务账号
Cloud SQL IAM 数据库身份验证
每个实例都有每分钟登录(包括成功的登录和失败的登录)配额。超出配额时,登录暂时无法进行。我们建议您不要频繁登录,并使用已获授权的网络限制登录。 登录授权的配额为每个实例每分钟 12000 次。
转发规则配额
每个 Cloud SQL 实例都包含转发规则和负载均衡器。根据转发规则指向的负载均衡器种类,转发规则存在配额限制。每个项目、每个网络和每个对等互连组对每种转发规则都有多种配额。对于 Cloud SQL,每个网络配额和每个对等互连组配额还有替换规则。这意味着当我们增加生产者网络的每个网络配额时,每个对等互连组配额也会增加到相同的值。
Cloud SQL 生产者 VPC 已与客户的 VPC 建立对等互连,因此,我们经常达到 Cloud SQL 生产者网络的每个网络配额以及客户的 VPC 的每个对等互连组配额。
当达到配额时,某些操作可能会失败,其中包括:
创建操作:我们在创建新实例时需要新的转发规则。
更新操作:我们允许客户切换实例网络,因此需要新网络中的新转发规则。
维护操作:重新创建转发规则。
为了避免任何问题,请考虑将每个网络的实例总数限制在 500 以下。
如果您遇到问题,请提交支持请求,我们会为您增加相关配额。
固定限额
IOPS
IOPS 是磁盘每秒能够处理的输入/输出操作(或读取/写入操作)次数。
Cloud SQL 使用配有永久性存储磁盘的 Compute Engine 虚拟机。如需详细了解特定的虚拟机性能特征,请参阅永久性磁盘性能页面上的最大持续 IOPS 表。
表限制
Cloud SQL for MySQL 实例的表数量限制为 50,000 个,或 500,000 个(如果满足至少 32 个核心和 200G 内存的最低硬件要求)。为了获得最佳性能,我们建议单个数据库中的表数量不超过 50,000 个。
超出这些限制的实例不在服务等级协议 (SLA) 的涵盖范围内。当表大小达到 Linux 分区的大小上限 16 TB 时,无法再添加其他数据。
实例所需的内存取决于各种因素。如需详细了解 Cloud SQL for MySQL 如何使用内存,请参阅 MySQL 如何使用内存。
如果活跃表数量大于 Cloud SQL 默认值,或者总体缓存大小明显很大,则需要调整实例。如需保持最佳性能,您可以:
- 升级到 Cloud SQL 企业 Plus 版以获取更高的内存选项。
- 升级 Cloud SQL 机器,为实例添加内存。
- 减小
innodb_buffer_pool_size
数据库标志的值。
table_open_cache
和 table_definition_cache
标志可用于修改 Cloud SQL for MySQL 表缓存。您可以使用性能架构来估算实例的表缓存大小。
如果活跃表的数量明显大于 Cloud SQL 表默认值和 MySQL 打开表建议,则 Cloud SQL 建议对实例的活跃表数量配置 table_open_cache
和 table_definition_cache
数据库标志。
如需了解详情,请参阅 MySQL 如何打开和关闭表。
操作限制
微型和小型层级机器类型会限制并发操作数。超出这些限制将导致 Too many operations
错误。
db-custom-1-3840(单 CPU)机器类型的限制为 50 个并发操作。
指标收集限制
系统最多会收集 500 个数据库的 PostgreSQL 指标。如果数据库超过 500 个,则对于给定指标,只包括前 500 个数据库。这些数据库的事务计数最高。
Cloud SQL 存储空间限额
- 专用核心:最高 64 TB。
- 共享核心:最高 3 TB。
如需了解详情,请参阅实例价格。
Cloud SQL 存储选项
如需配置存储选项以获得最佳性能,请务必了解您的工作负载,并选择适当的磁盘类型和大小。如需详细了解 Cloud SQL 的可用选项,请参阅实例设置。App Engine 限制
每个在标准环境中运行的 App Engine 实例与一个数据库实例的并发连接数不能超过 100 个。对于 PHP 5.5 应用,并发连接数上限为 60 个。
App Engine 应用受请求时间限制的约束,具体取决于使用情况和环境。如需了解详情,请参阅实例在 App Engine 标准环境标准和柔性环境中的管理方式。
App Engine 应用还受 App Engine 配额页面上所述的其他 App Engine 配额和限制的约束。
Cloud Run 限制
如果您在 Cloud Run 上使用内置的 Cloud SQL 连接,则 Cloud Run 容器实例与每个 Cloud SQL 数据库之间最多只能建立 100 个连接。
每个 Cloud Run 服务或作业实例可以与数据库建立 100 个连接,并且在此服务或作业扩容时,每个部署的连接总数可以随之增加。
使用其他连接方法(例如 Sidecar 中的 Cloud SQL Auth 代理、Cloud SQL 语言连接器)或直接连接到 Cloud SQL 实例的 IP 地址时,此限制不适用。
Cloud Run functions 限制
在 Cloud Run functions(第 1 代)中,每个实例只能并发执行一次。您永远不会遇到一个第 1 代函数实例同时处理两个请求的情况。因此在大多数情况下,只需要一个数据库连接。
Cloud Run functions(第 2 代)基于 Cloud Run,且每个实例的数据库连接限制为 100 个。