Cloud Spanner-在WHERE子句中读取大量项目的性能

时间:2019-06-29 00:14:16

标签: google-cloud-platform google-cloud-spanner

我正在评估一个项目的一些不同数据存储,我有一个奇怪但又不灵活的要求,即每个查询要检查1500个键的存在...基本上,我将要运行的唯一查询是表格:

SELECT user_id, name, gender
WHERE user_id in (user1, user2, ..., user1500)

表中将有约35亿行。 Spanner是引起我关注的一个数据存储。我想知道以这种方式查询数据是否可行,或者由于WHERE子句中的大量项目而导致性能问题。到目前为止,我只能在少量数据上测试这些查询,因此我更多地依靠理论上的性能打击,而不是奢求“尝试并发现”。

此外,是否还有其他数据存储可能更适合此读取模式?我希望每秒运行不超过80个查询。同样,数据将每周批量加载。数据是按自然结构构成的,但我们不会以关系方式(即无联接)使用它。

无论如何,如果这个问题含糊其辞,对不起。如果需要,我很乐意提供更多细节。

1 个答案:

答案 0 :(得分:4)

如果使用绑定数组参数指定键,

1500个键应该不是问题:

SELECT user_id, name, gender
FROM table
WHERE user_id in UNNEST(@users)

https://cloud.google.com/spanner/docs/sql-best-practices#write_efficient_queries_for_range_key_lookup