本页介绍了 Spanner 计算容量以及用于量化它的两个度量单位:节点和处理单元。
计算容量
计算容量定义了实例中数据库可用的服务器和存储资源的数量。创建实例时,您可以将其计算容量指定为处理单元数或节点数,1000 个处理单元等于 1 个节点。
使用哪种度量单位并不重要,除非您创建的实例的计算容量小于 1000 个处理单元(1 个节点);在这种情况下,您必须使用处理单元来指定实例的计算容量。
定义或更改实例的计算容量时,请以 100 的倍数(100、200、300 等)指定处理单元。当处理单元数量达到 1, 000 时,您可以将更大的数量指定为 1, 000 个处理单元的倍数(1, 000、2,000、3, 000 等)或节点数(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 如何使这些数据副本保持同步,请参阅复制。
实例 A 的服务器资源显示在单个框中,而实例 B 的资源显示在分为两个部分的框中。这种差异表明,Spanner 为不同大小的实例分配服务器资源的方式不同:
- 对于 1000 个处理单元(1 个节点)及更小的实例,Spanner 会在每个可用区的单个服务器任务中分配服务器资源。
- 对于大于 1000 个处理单元(1 个节点)的实例,Spanner 会在每个可用区的多个服务器任务中分配服务器资源,每 1000 个处理单元对应一个任务。为每个可用区使用多个服务器任务可以提高性能,使 Spanner 能够创建数据库分片并提供更好的性能。
更改计算容量
创建实例后,您可以增加其计算容量。在大多数情况下,请求会在几分钟内完成。在极少数情况下,扩容最长可能需要 1 小时才能完成。
在大多数情况下,您还可以减少计算容量。在以下几种情况下,您无法降低计算容量:
- 移除计算容量需要您的实例的每个节点(1,000 个处理单元)存储超过 10 TB 的数据。
- 根据您的历史使用模式,Spanner 为您的实例数据创建了大量分块,并且在某些罕见情况下,在移除计算容量后,Spanner 将无法管理分块。
在后一种情况下,您可以尝试逐步减小计算容量,直到找到 Spanner 管理实例所有分块所需的最小容量。如果由于使用模式变化而实例不再需要这么多分块,则 Spanner 最终可能会将一些分块合并在一起,并允许您在一两周后尝试进一步降低实例的计算容量。
移除计算容量时,请在 Cloud Monitoring 中监控 CPU 利用率和请求延迟时间,以确保单区域实例的 CPU 利用率保持在 65% 以下,多区域实例中每个区域的 CPU 利用率保持在 45% 以下。移除计算容量时,您可能会遇到请求延迟暂时增加的情况。
Spanner 没有暂停模式。Spanner 计算容量是专用资源,即使您没有运行工作负载,Spanner 也会经常执行后台工作以优化和保护您的数据。
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Spanner 客户端库来更改计算容量。如需了解详情,请参阅更改计算容量。
计算容量与副本
如果您需要纵向扩容实例中的服务器和存储资源,请增加实例的计算容量。请注意,增加计算容量不会增加副本的数量(对于给定实例配置而言,副本数量是固定的),但会增加每个副本在实例中拥有的资源。增加计算容量会为每个副本分配更多的 CPU 和 RAM,从而增加副本的吞吐量(也就是说,每秒可发生更多的读取和写入操作)。
后续步骤
- 了解如何创建和管理实例。