本页介绍了 Spanner 在最佳条件下可提供的大致性能、可能会影响性能的因素,以及测试和排查 Spanner 性能问题的提示。
本页中的信息适用于 GoogleSQL 和 PostgreSQL 数据库。
性能和存储空间改进
我们已面向所有 Spanner 单区域、双区域和多区域实例配置推出性能和存储方面的改进。您无需对应用进行任何更改,也不需要在 Spanner 实例中手动配置任何内容,即可获享这些改进带来的好处,而且无需额外付费。这些性能改进可提高所有实例配置中 Spanner 节点的吞吐量并缩短延迟时间。
提高性能吞吐量
所有 Spanner 实例配置的性能都得到了提升,吞吐量也得到了提高。下表提供了 Spanner 实例配置的大致吞吐量(每秒查询次数):
实例配置类型 | 读取峰值(每个区域的 QPS) | 写入峰值(总 QPS) | 使用针对吞吐量进行了优化的写入时的写入峰值(总 QPS) | ||
---|---|---|---|---|---|
地区 | 22500 | 或 | 3,500 | 22500 | |
双区域和多区域 | 15000 | 或 | 2,700 | 15000 |
如需了解这些实例配置的性能吞吐量,请参阅典型工作负载下的性能。
读取指导是按区域给的(因为可在任何读写或只读区域处理读取),而写入指导则是针对整个配置。读取指南假设您读取的是大小为 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) | ||
---|---|---|---|---|
22500 | 或 | 3,500 | 22500 |
对于允许可选只读副本的区域实例配置,可选只读副本每秒可额外支持 5,000 次读取。
双区域配置的性能
在双区域实例配置中,每 1,000 个处理单元(1 个节点)的计算容量可提供以下峰值性能(CPU 使用率为 100%)。使用针对吞吐量进行了优化的写入可将写入吞吐量提高到表格中所示数字以上。
基本配置名称 | 大致读取峰值(每个区域的 QPS) | 大致写入峰值(总 QPS) |
---|---|---|
dual-region-australia1 |
15000 | 2,700 |
dual-region-germany1 |
15000 | 2,700 |
dual-region-india1 |
15000 | 2,700 |
dual-region-japan1 |
15000 | 2,700 |
读取指导是按区域给的(因为可在任何位置处理读取),而写入指导则是针对整个配置。读写指南假设您每行读取和写入 1 KB 大小的数据。
多区域配置的性能
每个 Spanner 多区域实例配置的性能特征略有不同,具体取决于复制拓扑。使用针对吞吐量进行了优化的写入,将写入吞吐量提高到表格中所示数字以上。
每 1,000 个处理单元(1 个节点)的计算容量可以提供以下峰值性能(CPU 使用率为 100%):
基本配置名称 | 大致读取峰值(每个区域的 QPS) | 大致写入峰值(总 QPS) |
---|---|---|
asia1 |
15000 | 2,700 |
asia2 |
15000 | 2,700 |
eur3 |
15000 | 2,700 |
eur5 |
15000 | 2,700 |
eur6 |
15,000 7,500(每个可选的只读副本) |
2,700 |
nam3 |
15,000 7,500(每个可选的只读副本) |
2,700 |
nam6 |
us-central1 和 us-east1 中为 15,000, us-west1 和 us-west2 中为 7,500 [1] |
2,700 |
nam7 |
15,000 7,500(每个可选的只读副本) |
2,700 |
nam8 |
15000 | 2,700 |
nam9 |
15000 | 2,700 |
nam10 |
15000 | 2,700 |
nam11 |
15,000 7,500(每个可选的只读副本) |
2,700 |
nam12 |
15000 | 2,700 |
nam13 |
15000 | 2,700 |
nam14 |
15000 | 2,700 |
nam15 |
15000 | 2,700 |
nam16 |
15000 | 2,700 |
nam-eur-asia1 |
15000 | 1500 |
nam-eur-asia3 |
15000 | 1500 |
- [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 价格。