本页面介绍了 Spanner 计算容量以及用于量化它的两个度量单位:节点和处理单元。
计算容量
计算容量定义了实例中数据库可用的服务器和存储资源的数量,包括磁盘负载容量。磁盘负载仅适用于访问存储在 HDD 存储空间中的数据的工作负载。如需了解详情,请参阅分层存储概览。
创建实例时,您可以将其计算容量指定为处理单元数或节点数(1000 个处理单元等于 1 个节点)。使用哪种度量单位并不重要,除非您创建的实例的计算容量小于 1000 个处理单元(1 个节点);在这种情况下,您必须使用处理单元指定实例的计算容量。
对实例定义或更改计算容量时,您可以采用 100 的倍数(100、200、300 等)指定处理单元。当处理单元数达到 1000 时,您可以采用 1000 个处理单元的倍数(1000、2000、3000 等)或采用节点数(1、2、3 等)来指定较大的数量。
处理单元数少于 1,000 的实例适用于较小的数据大小、查询和工作负载。它们的计算资源有限,对于某些工作负载可能会导致出现非线性扩缩和性能,并且可能会遇到间歇性延迟时间增加。
数据存储限制
如配额和限制中所述,为在访问数据库时提供高可用性和低延迟时间,Spanner 会根据实例的计算容量来确定存储空间限制,并遵循以下准则:
- 对于小于 1 个节点(1000 个处理单元)的实例,Spanner 会为数据库中每 100 个处理单元分配 1024.0 GB 数据。
- 对于 1 个节点及更大的实例,Spanner 会为每个节点分配 10 TB 数据。
例如,如需为 300 GB 数据库创建实例,可以将其计算容量设置为 100 个处理单元。此计算容量将使实例保持在限制以下,直到数据库增长到 1024.0 GB 以上。数据库达到此大小后,您需要再添加 100 个处理单元以允许数据库增长。否则,Spanner 可能会拒绝对数据库执行的写入操作。如需了解详情,请参阅关于数据库存储空间利用率的建议。
Spanner 会按实例实际使用的存储空间收费,而不是按其总存储空间配额收费。
性能
给定计算容量可以提供的峰值读取和写入吞吐量值取决于实例配置,以及架构设计和数据集特征。如需了解详情,请参阅性能概览。
对于较小的数据大小、查询和工作负载,您可以使用处理单元数少于 1,000 的实例。对于较大的工作负载,其有限的计算资源可能会导致出现非线性扩缩和性能,并且延迟时间会间歇性增加。
计算容量和实例配置
如单区域、双区域和多区域配置中所述,Spanner 可在一个或多个区域的可用区间分布实例,以提供高性能和高可用性。因此,Spanner 还会分布实例的计算容量所提供的服务器资源。
下图说明了服务器资源的这种分布。
下图展示了两个具有区域配置的实例:
- Instance-A 显示具有 1000 个处理单元(1 个节点)的实例,其计算容量分布会使用三个可用区中的每个可用区中的服务器资源。
- Instance-B 显示具有 2000 个处理单元(2 个节点)的实例,其计算容量分布会使用三个可用区中的每个可用区中的服务器资源。
请注意下图中的以下内容:
对于每个实例,Spanner 会在单区域配置的每个可用区中分配服务器资源。每个可用区的服务器资源都会使用其可用区中的数据副本。如需了解实例配置中的数据副本,请参阅单区域、双区域和多区域配置。如需了解 Spanner 如何使这些数据副本保持同步,请参阅复制。
Instance-A 的服务器资源显示在单一框中,而 Instance-B 的资源显示在分为两个部分的框中。这种差异表明,Spanner 为不同大小的实例分配服务器资源的方式不同:
- 对于 1000 个处理单元(1 个节点)及更小的实例,Spanner 会在每个可用区的单个服务器任务中分配服务器资源。
- 对于大于 1000 个处理单元(1 个节点)的实例,Spanner 会在每个可用区的多个服务器任务中分配服务器资源,每 1000 个处理单元对应一个任务。对每个可用区使用多个服务器任务可以提高性能,使 Spanner 能够创建数据库分块并提供更好的性能。
更改计算容量
创建实例后,您可以增加其计算容量。在大多数情况下,请求会在几分钟内完成。在极少数情况下,扩容最长可能需要 1 小时才能完成。
在大多数情况下,您还可以减小计算容量。在以下几种情况下,您无法减小计算容量:
- 移除计算容量需要您的实例的每 1000 个处理单元(1 个节点)存储超过 10 TB 的数据。
- 根据您的历史使用模式,Spanner 为您的实例数据创建了大量分块,而在某些罕见情况下,在移除计算容量后,Spanner 无法管理分块。
在后一种情况下,您可以尝试逐步减小计算容量,直到找到 Spanner 管理实例的所有分块所需的最小容量。如果实例由于使用模式变化而不再需要这么多分块,则 Spanner 最终可能会将一些分块合并在一起,并允许您在一两周后尝试进一步减小实例的计算容量。
移除计算容量时,请在 Cloud Monitoring 中监控 CPU 利用率和请求延迟时间,以确保单区域实例的 CPU 利用率保持在 65% 以下,多区域实例中每个区域的 CPU 利用率保持在 45% 以下。移除计算容量时,您可能会遇到请求延迟时间暂时增加的情况。
Spanner 没有暂停模式。Spanner 计算容量是专用资源,即使您没有运行工作负载,Spanner 也会经常执行后台工作以优化和保护您的数据。
您可以使用Google Cloud 控制台、Google Cloud CLI 或 Spanner 客户端库来更改计算容量。如需了解详情,请参阅更改计算容量。
计算容量与副本
如果您需要纵向扩容实例中的服务器和存储资源,请增加实例的计算容量。请注意,增加计算容量不会增加副本的数量(对于给定实例配置而言,副本数量是固定的),而是会增加每个副本在实例中拥有的资源。增加计算容量会为每个副本分配更多的 CPU 和 RAM,从而增加副本的吞吐量(也就是说,每秒可进行更多的读取和写入操作)。
后续步骤
- 了解如何创建和管理实例。