效果概览

本页面介绍了 Spanner 在最佳条件下可以提供的大致性能、可能影响性能的因素,以及测试和排查 Spanner 性能问题的提示。

本页面上的信息适用于 GoogleSQL 数据库和 PostgreSQL 数据库。

性能和存储空间方面的改进

我们正在对所有 Spanner 单区域和多区域实例配置进行性能和存储改进。在单区域和多区域实例配置中,这些性能改进应该会提高 Spanner 节点的吞吐量和延迟时间。部分实例配置提供更高的吞吐量和存储空间。您无需对应用进行任何更改,也无需在 Spanner 实例中手动配置任何内容,即可利用这些改进功能,无需额外付费。

提高性能吞吐量

下表提供了性能改进后的实例配置的大致吞吐量(每秒查询次数)。该实例中每个节点(1000 个处理单元)的计算容量的吞吐量高达 50%。

实例配置类型 峰值读取次数(每个区域的 QPS)   峰值写入次数(总 QPS)   使用吞吐量优化写入的峰值写入次数(总 QPS)
区域级 22500 3,500 人 22500
多区域 15000 2,700,000 15000

更高的性能吞吐量适用于所有 Spanner 实例配置,但以下配置除外:

  • 区域实例配置:us-west4

  • 多区域实例配置:nam10nam-eur-asia1

如需了解这些实例配置的性能吞吐量,请参阅典型工作负载下的性能

读取指导是按区域提供的(因为可以从任何读写区域或只读区域提供读取指导),而写入指导则是针对整个配置。阅读指南假定您读取的单行大小为 1KB。写入指南假设您以每行 1KB 的数据写入单行。

使用吞吐量优化写入时,可以使用 100 毫秒的批处理延迟实现峰值写入性能。

通常,当您为 Spanner 实例添加更多计算容量(节点或处理单元)时,其读写吞吐量会呈线性扩缩。例如,如果具有 2 个节点的单区域 Spanner 实例每秒最多可提供 45000 次读取,则具有 4 个节点的单区域 Spanner 实例每秒最多可提供 90000 次读取。

如果您在 Spanner 中看到的工作负载未达到预期性能,请参阅排查性能回归问题,了解常见原因。

更多存储空间

对于选定的 Spanner 单区域和多区域实例配置,实例中每个节点(1000 个处理单元)的计算容量增加了 10 TB。下表提供了具有更大可用存储空间的实例配置:

区域实例配置

africa-south1asia-east1asia-northeast2asia-south1asia-southeast1australia-southeast1europe-west3europe-west4southamerica-east1us-central2us-east1us-east4us-east7

多区域实例配置

asia1nam6nam7nam8nam14

典型工作负载下的性能

如果您使用的实例配置没有提升性能吞吐量,则实例中每个节点(1,000 个处理单元)的计算容量可以提供以下大致吞吐量(每秒查询次数):

实例配置类型 峰值读取次数(每个区域的 QPS)   峰值写入次数(总 QPS)
区域级 (Regional) 15000 2,300,000
多区域(按基本配置细分) 10,000 1800

对于允许使用可选只读副本的区域实例配置,可选只读副本可以支持每秒额外 5000 次读取。

多区域配置的性能

每个 Spanner 多区域实例配置的性能特征略有不同,具体取决于复制拓扑。使用吞吐量优化写入将写入吞吐量提高到表中数字以外的值。

每 1000 个处理单元(1 个节点)的计算容量可以提供以下峰值性能(在 100% CPU 时):

基本配置名称 大致读取峰值(每个区域的 QPS) 大致写入峰值(总 QPS)
asia1 15000 2,700,000
asia2 15000 2,700,000
eur3 15000 2,700,000
eur5 15000 2,700,000
eur6 15000
7500(每个可选只读副本)
2,700,000
nam3 15000
7500(每个可选只读副本)
2,700,000
nam6 us-central1us-east1为 15,000,
us-west1us-west2为 7,500 [1]
2,700,000
nam7 15000
7500(每个可选只读副本)
2,700,000
nam8 15000 2,700,000
nam9 15000 2,700,000
nam10 10,000 1800
nam11 15000
7500(每个可选只读副本)
2,700,000
nam12 15000 2,700,000
nam13 15000 2,700,000
nam14 15000 2,700,000
nam15 15000 2,700,000
nam-eur-asia1 10,000 1,000
nam-eur-asia3 15000 1,500
  • [1]us-west1us-west2 提供的 QPS 性能仅有一半,因为它们在每个区域包含一个副本(而不是两个)。

读取指导按区域提供(因为可以从任何位置处理读取),而写入指导则适用于整个配置。读取和写入指南假设您以每行 1 KB 的数据读取和写入单行。

在 Spanner 上运行典型工作负载

在进行容量规划时,请始终针对 Spanner 实例运行您自己的典型工作负载,以便为您的应用确定最佳资源分配。Google 的 PerfKit Benchmarker 使用 YCSB 对云服务进行基准化分析。您可以按照适用于 Spanner 的 PerfKitBenchmarker 教程为您自己的工作负载创建测试。为此,您应调整基准测试配置 yaml 文件中的参数,以确保生成的基准反映生产环境中的以下特性:

  • 数据库的总大小
  • 架构(例如:行键大小、列数、行数据大小
  • 数据访问模式(行键分布)
  • 读取与写入混合
  • 查询的类型和复杂性

重现基准数据

如需重现基准数据,请按照“使用 PerfKit Benchmarker 对 Spanner 进行基准测试”教程中的说明,使用 throughput_benchmark 文件夹中相应的 yaml 文件。

如需对已进行了性能改进的实例配置中的实例进行基准测试,请确保您的测试是在这些改进的实例配置之一中运行。

可用区级和区域级故障防护

在生产环境中运行工作负载时,请务必预配足够的计算容量,以便在整个区域(对于区域实例)或整个区域(对于多区域实例)丢失时继续处理流量。如需详细了解建议的 CPU 数量上限,请参阅高 CPU 利用率提醒

后续步骤