计算容量、节点和处理单元

本页面介绍了 Spanner 计算容量以及用于量化 Spanner 的两个计量单位:节点和处理单元。

计算容量

计算容量定义了实例中数据库可用的服务器和存储资源的数量。创建实例时,您可以将其计算容量指定为处理单元数或节点数,1000 个处理单元等于 1 个节点。

除非您要创建的计算容量小于 1, 000 个处理单元(1 个节点)的实例,否则您使用的测量单位无关紧要;在这种情况下,您必须使用处理单元来指定实例的计算容量。

在定义或更改实例的计算容量时,您需以 100 的倍数(100、200、300 等)指定处理单元。当处理单元的数量达到 1000 时,您可以指定较大的数量,既可以指定为 1,000 的倍数(1000、2000、3000 等),也可以指定为节点(1、2、3 等)。

处理单元数少于 1,000 的实例适用于较小的数据大小、查询和工作负载。它们的计算资源有限,可能导致某些工作负载的非线性伸缩和性能,并且可能出现延迟时间间歇性增加的情况。

数据存储限制

配额和限制中所述,为了在访问数据库时提供高可用性和低延迟,Spanner 会根据实例的计算容量来确定存储空间限制,并遵循以下准则:

  • 对于小于 1 个节点(1,000 个处理单元)的实例,Spanner 为数据库中的每 100 个处理单元分配 409.6 GB 的数据。
  • 对于具有 1 个及更多节点的实例,Spanner 会为每个节点分配 4 TB 的数据。部分单区域和多区域 Spanner 实例配置提供增加的存储空间容量(每个节点 10 TB)。如需了解详情,请参阅性能和存储空间改进

例如,如需为 300 GB 的数据库创建实例,您可以将其计算容量设置为 100 个处理单元。此计算容量可将实例保持在限制以下,直到数据库增长到超过 409.6 GB。当数据库达到此大小后,您需要再添加 100 个处理单元,才能让数据库扩容。否则,Spanner 可能会拒绝对数据库执行写入操作。如需了解详情,请参阅数据库存储空间利用率建议

Spanner 将按实例实际使用的存储空间(而非其总存储空间配额)计费。

性能

给定计算容量可以提供的峰值读取和写入吞吐量值取决于实例配置,以及架构设计和数据集特征。如需了解详情,请参阅单区域配置性能多区域配置性能部分。

您可以将处理单元数少于 1,000 的实例用于较小的数据规模、查询和工作负载。对于较大的工作负载,有限的计算资源可能会导致非线性伸缩和性能,而延迟时间会间歇性增加。

计算容量和实例配置

单区域和多区域配置中所述,Spanner 跨一个或多个区域的可用区分布实例,以提供高性能和高可用性。因此,Spanner 还会分配实例的计算容量提供的服务器资源。

下图说明了服务器资源的这种分布。

在单区域实例配置中创建的两个实例

下图展示了两个具有区域配置的实例:

  • Instance-A 显示了一个具有 1,000 个处理单元(1 个节点)的实例,其计算容量分布分别在这三个可用区中占用了服务器资源。
  • Instance-B 显示了一个具有 2000 个处理单元(2 个节点)的实例,其计算容量分布分别在这三个可用区中占用了服务器资源。

请注意下图中的以下内容:

  • 对于每个实例,Spanner 会在区域配置的每个可用区中分配服务器资源。每个可用区内的服务器资源都会在其可用区中使用数据副本。如需了解实例配置中的数据副本,请参阅单区域和多区域配置。如需了解 Spanner 如何使这些数据副本保持同步,请参阅复制

  • 实例 A 的服务器资源显示在简单框中,而实例 B 的资源显示在分为两个部分的框中。这种差异说明 Spanner 以不同的方式为不同大小的实例分配服务器资源:

    • 对于大小不超过 1000 个处理单元(1 个节点)的实例,Spanner 会在每个可用区的单个服务器任务中分配服务器资源。
    • 对于处理单元数超过 1,000(1 个节点)的实例,Spanner 会在每个可用区的多个服务器任务中分配服务器资源,每 1, 000 个处理单元一个任务。在每个可用区使用多个服务器任务可以提升性能,让 Spanner 能够创建数据库分块,从而提供更好的性能。

增加和减少计算容量

创建实例后,您可以增加其计算容量。在大多数情况下,您还可以减少计算容量。在以下几种情况下,您无法降低计算容量:

  • 移除计算容量需要您的实例每 1,000 个处理单元(1 个节点)存储超过 4 TB 的数据。
  • 根据您的历史使用模式,Spanner 已为实例数据创建了大量分片,在极少数情况下,Spanner 移除计算容量后将无法管理分片。

在后一种情况下,您可以尝试逐步减少计算容量,直到找到 Spanner 管理所有实例拆分所需的最小容量。如果由于使用模式的变化,实例不再需要如此多的分片,则 Spanner 最终可能会将一些分片合并在一起,并允许您在一两周后尝试进一步减少实例的计算容量。

移除计算容量时,请在 Cloud Monitoring 中监控 CPU 利用率和请求延迟时间,以确保单区域实例的 CPU 利用率保持在 65% 以下,多区域实例中每个区域的 CPU 利用率保持在 45% 以下。在移除计算容量时,您可能会遇到请求延迟时间暂时增加的情况。

您可以使用 Google Cloud 控制台Google Cloud CLI 或客户端库来更改计算容量。

Spanner 没有挂起模式。Spanner 计算容量是一项专用资源,即使您没有运行工作负载,Spanner 也会频繁执行后台工作来优化和保护您的数据。

计算容量与副本

如果您需要纵向扩容实例中的服务器和存储资源,请增加实例的计算容量。请注意,增加计算容量不会增加副本数量(对于给定实例配置,副本数量是固定的),但会增加每个副本在实例中拥有的资源。增加计算容量可为每个副本提供更多 CPU 和 RAM,从而提高副本的吞吐量(即,每秒可发生更多的读取和写入操作)。

后续步骤