效果概览

本页面介绍了 Spanner 可 最佳条件下提供的 影响性能的因素 以及使用技巧 ,以便测试和排查 Spanner 性能问题。

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

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

性能和存储空间方面的改进即将面向所有用户推出 Spanner 单区域和多区域实例 配置。您无需 或手动配置您应用中的任何内容 Spanner 实例可以利用这些改进, 且无需额外付费。这些性能改进带来 Spanner 节点在这两个国家/地区都有更高的吞吐量和更低的延迟 单区域和多区域实例配置所有实例配置 吞吐量提高了,部分实例配置也增加了 storage。

提高性能吞吐量

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

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

有关这些实例的性能吞吐量的信息 请参阅典型工作负载下的性能

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

使用吞吐量优化写入时,可使用 100 毫秒的批处理延迟时间。

一般来说,Spanner 的读写吞吐量 随着您增加更多计算容量(节点或处理能力), 单位)。例如,如果单区域 Spanner 具有 2 个节点的实例每秒可以提供高达 45,000 次读取, 具有 4 个节点的单区域 Spanner 实例最多可提供 每秒 9 万次读取。

如果您在以下时间段内没有看到工作负载的预期性能: Spanner,请参阅排查性能下降问题 了解常见原因。

更多存储空间

适用于大多数 Spanner 单区域和多区域实例 每个节点(1,000 个处理单元)的计算容量, 实例的存储容量增加了 10 TB。 所有 Spanner 实例均可使用增加的存储空间 以下配置除外:

区域实例配置

us-west4, us-west8

多区域实例配置

nam10, nam-eur-asia1

典型工作负载下的性能

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

区域配置的性能

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

峰值读取次数(每个区域的 QPS)   峰值写入次数(总 QPS)   使用吞吐量优化写入的峰值写入次数(总 QPS)
22500 3,500 人 22500

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

双区域配置的性能

每 1000 个处理单元(1 个节点)的计算容量可提供 之后为双区域实例配置中的峰值性能(CPU 为 100%)。 使用吞吐量优化写入 以增加写入吞吐量,使其超过表中的数字。

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

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

多区域配置的性能

每项 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 15000 2,700,000
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
nam16 15000 2,700,000
nam-eur-asia1 15000 1500
nam-eur-asia3 15000 1500
  • [1]us-west1us-west2 只能提供一半的 QPS 性能,因为它们 而不是两个

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

在 Spanner 上运行典型工作负载

始终对 Spanner 实例运行您自己的典型工作负载 以便确定最佳的资源分配方式 。Google 的 PerfKit Benchmarker 使用 YCSB - 对云服务进行基准化分析。您可以 学习适用于 Spanner 的 PerfKitBenchmarker 教程 来为自己的工作负载创建测试执行上述操作时, 包含基准化分析配置 yaml 文件中的参数, 确保生成的基准反映 生产环境:

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

重现基准数据

要重现基准数据,请遵循 “使用 PerfKit Benchmarker 对 Spanner 进行基准测试”教程 使用 throughput_benchmark 中相应的 yaml 文件 文件夹中。

对经历过的实例配置中的实例进行基准测试 性能提升,请确保您的测试 以这些改进的实例配置之一运行。

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

在生产环境中运行工作负载时,务必要为工作负载 计算容量,以便在发生服务中断时继续处理流量 整个可用区(对于单区域实例)或整个区域(对于双区域和 多区域实例)。如需详细了解建议的 CPU 上限, 请参阅高 CPU 利用率提醒

后续步骤