使用聚类键上的IN子句的Cassandra性能

时间:2018-03-16 11:01:10

标签: performance cassandra cql clustering-key

让我们考虑下表

CREATE TABLE base_table(
    partition_key uuid,
    clustering_key1 uuid,
    clustering_key2 uuid,
    regular text,
    PRIMARY KEY((partition_key), clustering_key1, clustering_key2)
);

在Cassandra 2.2之前,无法进行这样的查询:

SELECT * FROM base_table 
WHERE partition_key=<UUID1> 
AND clustering_key1 IN (<UUID2>,<UUID3>) 
AND clustering_key2 < UUID4

实际上,只有当前一个密钥受到相等的关系限制时,才能限制聚类密钥。

自Cassandra 2.2以来,它有可能但有人知道是否有一些警告这样做? 可以预期什么性能,就像没有IN子句(或接近)一样?它是否像平等关系一样扩展?

更多,Cassandra 3.X新存储引擎可能已考虑优化此类请求......如果有人对此有意见:)

谢谢!

1 个答案:

答案 0 :(得分:3)

因为您正在从同一个分区读取,所以在IN关系中有许多元素之前,不应该产生非常大的性能影响...但如果您选择可能会出现问题<比较过多的条目(也可能是单=的问题)。