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

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

计算容量

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

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

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

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

数据存储限制

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

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

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

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

性能

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

对于较小的数据、查询和工作负载,请使用处理单元少于 1000 个的实例。对于较大的工作负载,其有限的计算资源可能会导致非线性伸缩和性能,并且延迟时间间歇增加。

计算容量和实例配置

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

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

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

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

  • Instance-A 显示了一个具有 1000 个处理单元(1 个节点)的实例,其计算容量分布会消耗三个地区中每个地区的服务器资源。
  • Instance-B 显示了一个具有 2000 个处理单元(2 个节点)的实例,其计算容量分布会消耗三个地区中每个地区的服务器资源。

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

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

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

    • 对于 1,000 个处理单元(1 个节点)及更小的实例,Spanner 会在每个地区的单个服务器任务中分配服务器资源。
    • 对于超过 1,000 个处理单元(1 个节点)的实例,Spanner 会在每个地区的多项服务器任务中分配服务器资源,每 1000 个处理单元分配一个任务。在每个可用区使用多个服务器任务可以提高性能,还能使 Spanner 能够创建数据库分块并实现更好的性能。

更改计算容量

创建实例后,您可以增加其计算容量。在大多数情况下,请求会在几分钟内完成。在极少数情况下,纵向扩容最多可能需要一个小时才能完成。

在大多数情况下,您还可以减少计算容量。在以下几种情况下,您无法减少计算容量:

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

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

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

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

您可以使用 Google Cloud 控制台Google Cloud CLI 或 Spanner 客户端库来更改计算容量。如需了解详情,请参阅更改计算容量

计算容量与副本

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

后续步骤