了解性能
本页面介绍了 Bigtable 在最佳条件下可提供的大致性能、可能会影响性能的因素,以及测试和排查 Bigtable 性能问题的提示。
典型工作负载下的性能
Bigtable 可提供高度可预测的线性扩缩性能。如果您避免了本页面所述的性能下降的原因,则每个 Bigtable 节点都可提供以下大致吞吐量,具体取决于集群使用的存储空间类型:
| 存储层级 | 读取 | 写入 | 扫描 | ||
|---|---|---|---|---|---|
| 内存中层(预览版) | 每秒最多 12 万行1 | 或 | 每秒最多 10,000 行2 | 不适用 | |
| SSD | 每秒最多 17,000 行 | 或 | 每秒最多 14,000 行 | 或 | 最高 220 MBps |
| HDD | 每秒最多 500 行 | 或 | 每秒最多 10000 行 | 或 | 最高 180 MBps |
| 不常访问的存储空间 | 每秒最多 100 行 | 或 | 每秒最多 10000 行 | 或 | 最高 36 MBps |
这些估算值假设每行包含 1 KB 的数据。
1 企业 Plus 版节点的读取吞吐量为每秒 4 万行,并且可以以 4 万行为增量垂直扩缩至每秒 12 万行。如需了解详情,请参阅内存中层。
2 每秒向内存中层写入大量行可能会影响写入吞吐量。
一般来说,集群的性能会随着集群中节点数量的增加而线性提升。例如,如果您创建一个具有 10 个节点的 SSD 集群,则在未启用内存中层的情况下,该集群在典型的只读或只写工作负载下最多可以支持每秒 14 万行读取或写入。启用内存中层后,集群可以支持每秒高达 120 万行的读取吞吐量。
规划 Bigtable 容量
在规划 Bigtable 集群时,请确定您是想优化延迟时间还是吞吐量。例如,对于批量数据处理作业,您可能更关心吞吐量,而不太关心延迟时间。相比之下,对于处理用户请求的在线服务,您可能需要优先考虑较短的延迟时间,而不是吞吐量。当您优化吞吐量时,可以实现典型工作负载下的性能部分中的数字。
内存中层
启用内存中层后,每个节点每秒可处理 4 万行。以横向方式添加节点可增加集群总容量。此外,每个节点还可以纵向扩缩,最高可达每秒 12 万行,以支持内存读取吞吐量。当达到纵向伸缩限制时,Bigtable 自动伸缩功能会添加更多节点以进行横向伸缩。采用手动伸缩的集群支持内存中纵向伸缩,直至达到吞吐量容量上限。 超出每秒 4 万行的纵向伸缩按节点的小时费用乘以相应倍数计费。如需了解详情,请参阅价格。
每个内存中节点都包含 8 GB 的存储容量。虽然吞吐量可以纵向扩缩,但每个节点的存储空间容量保持不变。不过,横向伸缩会为每个新节点额外添加 8 GB 内存。由于存储空间在纵向伸缩期间不会增加,因此当节点纵向伸缩其内存中吞吐量时,工作负载的未命中率可能会上升。
CPU 利用率
在几乎所有情况下,我们都建议您使用自动扩缩功能,以便 Bigtable 根据使用情况添加或移除节点。如需了解详情,请参阅自动扩缩。