本页面介绍了 Spanner 在最佳条件下可以提供的大致性能、可能影响性能的因素,以及测试和排查 Spanner 性能问题的提示。
本页面上的信息适用于 GoogleSQL 数据库和 PostgreSQL 数据库。
性能和存储空间方面的改进
我们正在对所有 Spanner 单区域和多区域实例配置进行性能和存储改进。在单区域和多区域实例配置中,这些性能改进应该会提高 Spanner 节点的吞吐量和延迟时间。部分实例配置提供更高的吞吐量和存储空间。您无需对应用进行任何更改,也无需在 Spanner 实例中手动配置任何内容,即可利用这些改进功能,无需额外付费。
提高性能吞吐量
下表提供了性能改进后的实例配置的大致吞吐量(每秒查询次数)。该实例中每个节点(1000 个处理单元)的计算容量的吞吐量高达 50%。
实例配置类型 | 峰值读取次数(每个区域的 QPS) | 峰值写入次数(总 QPS) | 使用吞吐量优化写入的峰值写入次数(总 QPS) | ||
---|---|---|---|---|---|
区域级 | 22500 | 或 | 3,500 人 | 22500 | |
多区域 | 15000 | 或 | 2,700,000 | 15000 |
更高的性能吞吐量适用于所有 Spanner 实例配置,但以下配置除外:
区域实例配置:
us-west4
多区域实例配置:
nam10
、nam-eur-asia1
如需了解这些实例配置的性能吞吐量,请参阅典型工作负载下的性能。
读取指导是按区域提供的(因为可以从任何读写区域或只读区域提供读取指导),而写入指导则是针对整个配置。阅读指南假定您读取的单行大小为 1KB。写入指南假设您以每行 1KB 的数据写入单行。
使用吞吐量优化写入时,可以使用 100 毫秒的批处理延迟实现峰值写入性能。
通常,当您为 Spanner 实例添加更多计算容量(节点或处理单元)时,其读写吞吐量会呈线性扩缩。例如,如果具有 2 个节点的单区域 Spanner 实例每秒最多可提供 45000 次读取,则具有 4 个节点的单区域 Spanner 实例每秒最多可提供 90000 次读取。
如果您在 Spanner 中看到的工作负载未达到预期性能,请参阅排查性能回归问题,了解常见原因。
更多存储空间
对于选定的 Spanner 单区域和多区域实例配置,实例中每个节点(1000 个处理单元)的计算容量增加了 10 TB。下表提供了具有更大可用存储空间的实例配置:
区域实例配置 |
|
---|---|
多区域实例配置 |
|
典型工作负载下的性能
如果您使用的实例配置没有提升性能吞吐量,则实例中每个节点(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-central1 和us-east1 为 15,000,us-west1 和us-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-west1
和us-west2
提供的 QPS 性能仅有一半,因为它们在每个区域包含一个副本(而不是两个)。
读取指导按区域提供(因为可以从任何位置处理读取),而写入指导则适用于整个配置。读取和写入指南假设您以每行 1 KB 的数据读取和写入单行。
在 Spanner 上运行典型工作负载
在进行容量规划时,请始终针对 Spanner 实例运行您自己的典型工作负载,以便为您的应用确定最佳资源分配。Google 的 PerfKit Benchmarker 使用 YCSB 对云服务进行基准化分析。您可以按照适用于 Spanner 的 PerfKitBenchmarker 教程为您自己的工作负载创建测试。为此,您应调整基准测试配置 yaml
文件中的参数,以确保生成的基准反映生产环境中的以下特性:
重现基准数据
如需重现基准数据,请按照“使用 PerfKit Benchmarker 对 Spanner 进行基准测试”教程中的说明,使用 throughput_benchmark 文件夹中相应的 yaml
文件。
如需对已进行了性能改进的实例配置中的实例进行基准测试,请确保您的测试是在这些改进的实例配置之一中运行。
可用区级和区域级故障防护
在生产环境中运行工作负载时,请务必预配足够的计算容量,以便在整个区域(对于区域实例)或整个区域(对于多区域实例)丢失时继续处理流量。如需详细了解建议的 CPU 数量上限,请参阅高 CPU 利用率提醒。
后续步骤
- 了解如何设计 Spanner 架构。
- 了解如何监控 Spanner 性能。
- 了解如何使用 Key Visualizer 排查问题。
- 了解 Spanner 价格。