效果概览

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

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

性能和存储空间改进

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

提高性能吞吐量

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

实例配置类型 读取峰值(每个区域的 QPS)   写入峰值(QPS 总计)
区域级 22500 3500
多区域 15000 2700

提高性能吞吐量适用于所有 Spanner 实例配置,但不包括:

  • 区域性实例配置:us-west4

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

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

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

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

如果 Spanner 中没有为工作负载提供所需的性能,请参阅排查性能下降问题,了解常见原因。

更多存储空间

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

区域性实例配置

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

多区域实例配置

asia1nam6nam7nam8nam14

典型工作负载下的性能

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

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

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

多区域配置的性能

基于复制拓扑,每项 Spanner 多区域实例配置的性能特征略有不同。

每 1,000 个处理单元(1 个节点)的计算容量可提供以下峰值性能(CPU 使用率为 100%):

基本配置名称 大致读取峰值(每个区域的 QPS) 大致写入峰值(总 QPS)
asia1 15000 2700
asia2 15000 2700
eur3 15000 2700
eur5 15000 2700
eur6 15,000
7,500(每个可选只读副本)
2700
nam3 15,000
7,500(每个可选只读副本)
2700
nam6 us-central1us-east1
,有 15,000 次在 us-west1us-west2 有 7,500 次[1]
2700
nam7 15,000
7,500(每个可选只读副本)
2700
nam8 15000 2700
nam9 15000 2700
nam10 10,000 1800
nam11 15,000
7,500(每个可选只读副本)
2700
nam12 15000 2700
nam13 15000 2700
nam14 15000 2700
nam15 15000 2700
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 利用率提醒

后续步骤