本页面介绍了 Spanner 可 最佳条件下的可能影响性能的因素, ,以便测试和排查 Spanner 性能问题。
此页面上的信息适用于 GoogleSQL 和 PostgreSQL 数据库。
性能和存储空间方面的改进
性能和存储空间方面的改进即将面向所有用户推出 Spanner 单区域和多区域实例 配置。您无需对应用进行任何更改,也不需要在 Spanner 实例中手动配置任何内容,即可获享这些改进带来的好处,而且无需额外付费。这些性能改进带来 Spanner 节点在这两个国家/地区都有更高的吞吐量和更低的延迟 单区域和多区域实例配置所有实例配置的吞吐量均有所提高,部分实例配置的存储空间也增加了。
提高性能吞吐量
所有 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 实例配置均可使用增量存储空间:
区域实例配置 |
|
---|---|
多区域实例配置 |
|
典型工作负载下的性能
所有 Spanner 实例配置的性能都得到了提升 并提高吞吐量
区域配置的性能
在区域实例配置中,每 1,000 个处理单元(1 个节点)的计算容量可以提供以下峰值性能(CPU 使用率为 100%):
读取峰值(每个区域的 QPS) | 峰值写入次数(总 QPS) | 使用吞吐量优化写入的峰值写入次数(总 QPS) | ||
---|---|---|---|---|
22500 | 或 | 3,500 | 22500 |
对于允许可选只读副本的区域性实例配置,可选只读副本每秒可额外支持 5,000 次读取。
双区域配置的性能
每 1000 个处理单元(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,000 |
读取指导是按区域给的(因为可在任何位置处理读取),而写入指导则是针对整个配置。读写指南假设您每行读取和写入 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,000 |
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,000 |
nam8 |
15000 | 2,700 |
nam9 |
15000 | 2,700 |
nam10 |
15000 | 2,700 |
nam11 |
15,000 每个可选只读副本 7,500 |
2,700,000 |
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 价格。