效果概览

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

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

性能和存储空间改进

我们已面向所有 Spanner 单区域、双区域和多区域实例配置推出性能和存储方面的改进。您无需对应用进行任何更改,也不需要在 Spanner 实例中手动配置任何内容,即可获享这些改进带来的好处,而且无需额外付费。这些性能改进可提高所有实例配置中 Spanner 节点的吞吐量并缩短延迟时间。

提高性能吞吐量

所有 Spanner 实例配置的性能都得到了提升,吞吐量也得到了提高。下表提供了 Spanner 实例配置的大致吞吐量(每秒查询次数):

实例配置类型 读取峰值(每个区域的 QPS)   写入峰值(总 QPS)   使用针对吞吐量进行了优化的写入时的写入峰值(总 QPS)
地区 SSD:22,500
HDD:1,500
SSD:3,500
HDD:3,500
SSD:22,500
HDD:22,500
双区域和多区域 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700
SSD:15,000
HDD:15,000

如需了解这些实例配置的性能吞吐量,请参阅典型工作负载下的性能。如需详细了解如何使用固态硬盘 (SSD) 和普通硬盘 (HDD) 存储数据,请参阅分层存储概览

读取指导是按区域给的(因为可在任何读写或只读区域处理读取),而写入指导则是针对整个配置。读取指导假设您读取的是大小为 1KB 的单行数据。写入指导假设您每行写入 1KB 大小的数据。

使用 针对吞吐量进行优化的写入时,通过设置 100 毫秒的批处理延迟时间可实现写入峰值性能。

一般来说,随着您向 Spanner 实例添加更多计算容量(节点或处理单元),该实例的读写吞吐量也会线性扩缩。例如,如果一个包含 2 个节点的单区域 Spanner 实例最多可提供每秒 45,000 次读取,那么一个包含 4 个节点的单区域 Spanner 实例最多可提供每秒 90,000 次读取。

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

更多存储空间

对于所有 Spanner 区域级、双区域级和多区域级实例配置,实例中每个节点(1,000 个处理单元)的计算容量都会增加 10 TB 的存储容量。

典型工作负载下的性能

所有 Spanner 实例配置的性能都得到了提升,吞吐量也得到了提高。

区域配置的性能

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

读取峰值(每个区域的 QPS)   写入峰值(总 QPS)   使用针对吞吐量进行了优化的写入时的写入峰值(总 QPS)
SSD:22,500
HDD:1,500
SSD:3,500
HDD:3,500
SSD:22,500
HDD:22,500

对于允许使用可选只读副本的区域实例配置,可选只读副本可额外支持每秒 7,500 次 SSD 存储空间读取和每秒 500 次 HDD 存储空间读取。

双区域配置的性能

在双区域实例配置中,每 1,000 个处理单元(1 个节点)的计算容量可提供以下峰值性能(CPU 使用率为 100%)。使用针对吞吐量进行了优化的写入可将写入吞吐量提高到表格中所示数字以上。

基本配置名称 大致读取峰值(每个区域的 QPS) 大致写入峰值(总 QPS)
dual-region-australia1 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700
dual-region-germany1 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700
dual-region-india1 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700
dual-region-japan1 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700

读取指导是按区域给的(因为可在任何位置处理读取),而写入指导则是针对整个配置。读写指南假设您每行读取和写入 1 KB 大小的数据。

多区域配置的性能

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

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

基本配置名称 大致读取峰值(每个区域的 QPS) 大致写入峰值(总 QPS)
asia1 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700
asia2 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700
eur3 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700
eur5 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700
eur6 SSD:每个可选只读副本 15,000 日元,7,500 日元
HDD:每个可选只读副本 1,000,500 日元
SSD:2,700
HDD:2,700
eur7 SSD:每个可选只读副本 15,000 日元,7,500 日元
HDD:每个可选只读副本 1,000,500 日元
SSD:2,700
HDD:2,700
nam3 SSD:每个可选只读副本 15,000 日元,7,500 日元
HDD:每个可选只读副本 1,000,500 日元
SSD:2,700
HDD:2,700
nam6 SSD:us-central1us-east1 中为 15,000,us-west1us-west2 中为 7,500
HDD:us-central1us-east1 中为 1,000,us-west1us-west2 中为 500 [1]

SSD:2,700

HDD:2,700
nam7 SSD:每个可选只读副本 15,000 日元,7,500 日元
HDD:每个可选只读副本 1,000,500 日元
SSD:2,700
HDD:2,700
nam8 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700
nam9 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700
nam10 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700
nam11 SSD:每个可选只读副本 15,000 日元,7,500 日元
HDD:每个可选只读副本 1,000,500 日元
SSD:2,700
HDD:2,700
nam12 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700
nam13 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700
nam14 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700
nam15 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700
nam16 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700
nam-eur-asia1 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700
nam-eur-asia3 SSD:15,000
HDD:1,000
SSD:2,700
HDD:2,700
  • [1]us-west1us-west2 仅提供 QPS 性能的一半,因为它们在每个区域包含一个副本而不是两个。

读取指导是按区域给的(因为可在任何位置处理读取),而写入指导则是针对整个配置。读写指南假设您每行读取和写入 1 KB 大小的数据。

针对 Spanner 运行典型工作负载

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

重现基准测试数据

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

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

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

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

后续步骤