2017-04-06 62 views
1

我用一个简单的键和值填充了100M行的数据库。主键只是一个随机的32字节字符串,值是一个32字节的字符串。 (这与YCSB非常相似,尽管更小)。Cloud Spanner中的低读取吞吐量

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

回答

1

缓存(即从辅助存储缓存数据)不应严重影响您的性能,并且在云端扳手的大多数性能讨论中通常都可以忽略它。但是,Cloud Spanner确实有query cache,这可能是此问题的一部分。

有可能会影响你的表现如此严重的几个因素:

1)如果你正在使用你的观点SQL查询读取,确保您使用的查询参数。换句话说,请确保您的executeSql请求中填充了paramsparamTypes字段。这将提高查询性能并提供更好的安全性。有关查询性能的更多信息,请参阅此whitepaper

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

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