本页面介绍了 Spanner 在最佳条件下可提供的大致性能、可能影响性能的因素,以及测试和排查 Spanner 性能问题的提示。
本页面中的信息适用于 GoogleSQL 和 PostgreSQL 数据库。
性能和存储空间改进
性能和存储方面的改进将面向所有 Spanner 单区域和多区域实例配置推出。在单区域和多区域实例配置中,这些性能改进应该会提高 Spanner 节点的吞吐量,并缩短延迟时间。部分实例配置提供更高的吞吐量和存储空间。您无需对应用进行任何更改,也无需在 Spanner 实例中手动配置任何内容,即可利用这些改进,无需您额外付费。
提高性能吞吐量
下表提供了性能提升的实例配置的大致吞吐量(每秒查询次数)。实例中每个节点(1,000 个处理单元)的计算容量可高达 50%。
实例配置类型 | 读取峰值(每个区域的 QPS) | 写入峰值(QPS 总计) | |
---|---|---|---|
区域级 | 22500 | 或 | 3500 |
多区域 | 15000 | 或 | 2700 |
提高性能吞吐量适用于所有 Spanner 实例配置,但不包括:
区域性实例配置:
us-west4
多区域实例配置:
nam10
、nam-eur-asia1
如需了解这些实例配置的性能吞吐量,请参阅典型工作负载下的性能。
读取指导是按区域提供(因为读取可以从任何读写区域或只读区域提供),而写入指导则是针对整个配置。阅读指南假定您阅读的是 1KB 的单行。写入指南假定您以每行 1KB 的数据写入单行。
一般来说,当您向 Spanner 实例添加更多计算容量(节点或处理单元)时,其读写吞吐量都会线性扩缩。例如,如果具有 2 个节点的单区域 Spanner 实例每秒最多可以提供 45000 次读取,则具有 4 个节点的单区域 Spanner 实例每秒最多可以提供 90000 次读取。
如果 Spanner 中没有为工作负载提供所需的性能,请参阅排查性能下降问题,了解常见原因。
更多存储空间
对于部分 Spanner 单区域和多区域实例配置,实例中每个节点(1,000 个处理单元)的存储容量增加到 10 TB。下表提供了具有更多可用存储空间的实例配置:
区域性实例配置 |
|
---|---|
多区域实例配置 |
|
典型工作负载下的性能
如果您使用的实例配置未提升性能吞吐量,那么您的实例中的每个节点(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-central1 和 us-east1 ,有 15,000 次在 us-west1 和 us-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-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 价格。