1

我有一个包含 100M 行的数据库,其中包含简单的键和值。主键只是一个随机的 32 字节字符串,值是一个 32 字节的字符串。(它与 YCSB 非常相似,虽然更小)。

我看到单个节点进行点读取的吞吐量非常不一致。我看到单个节点的 QPS 高达 15k,但有时我看到的吞吐量要低得多。较高的 QPS 似乎是查询较小的键子集的结果。我是否有可能遇到一些奇怪的缓存行为?

4

1 回答 1

1

缓存(即从二级存储缓存数据)不应该对性能造成如此严重的影响,而且在大多数关于 Cloud Spanner 的性能讨论中通常可以忽略它。但是,Cloud Spanner 确实有一个查询缓存,这可能是这里问题的一部分。

有几个因素会严重影响你的表现:

1) 如果您使用 SQL 查询进行点读,请确保您使用的是查询参数。换句话说,确保您在executeSql请求中填充了paramsandparamTypes字段。这将提高查询的性能并提供更好的安全性。本白皮书中提供了有关查询性能的更多信息。

2) 如果您正在运行负载测试,请确保运行您的工作负载至少 30 分钟,以确保 Spanner 有机会通过平衡(并创建新的)节点间的拆分来优化数据分布。

请注意,您应该能够在任何新鲜度级别(例如Strong Reads)看到出色的读取性能,如果您使用 Bounded-Staleness,您可能会看到轻微的提升。

于 2017-04-06T22:05:10.140 回答