Cassandra 仅使用分区键的查询性能

Cassandra 仅使用分区键的查询性能,cassandra,cassandra-3.0,clustering-key,Cassandra,Cassandra 3.0,Clustering Key,如果在查询同时包含分区键和集群键的表时只提供分区键,性能是否会受到影响 例如,对于具有分区键p1和集群键c1的表,将 SELECT * FROM table1 where p1 = 'abc'; 不如 SELECT * FROM table1 where p1 = 'abc' and c1 >= 'some range start value' and c1 <= 'some range end value'; SELECT*来自表1,其中p1='abc'和c1>='some r

如果在查询同时包含分区键和集群键的表时只提供分区键,性能是否会受到影响

例如,对于具有分区键p1和集群键c1的表,将

SELECT * FROM table1 where p1 = 'abc';
不如

SELECT * FROM table1 where p1 = 'abc' and c1 >= 'some range start value' and c1 <= 'some range end value';

SELECT*来自表1,其中p1='abc'和c1>='some range start value'和c1转到特定行与特定分区的主要成本是,在分区的开头反序列化集群键索引需要额外的工作和必要性。它有点古老,以节俭为基础,但其要点仍在以下几点:

(注:行级bloom过滤器已拆除)

当从分区的开始读取时,您可以节省一些工作,这将提高延迟


只要您的查询不跨越多个分区,我就不会太担心这个问题。通常,只有当分区大小达到数百mb或gb时,才会出现问题。

这取决于给定分区键的行宽。如果“abc”分区键有1000行,它必须将所有行提取到内存和驱动程序节点中,等等。但是,如果您的目标是提取所有行,那么为什么在集群列上有一个谓词呢?毕竟这是不必要的。只是为了澄清,它只会读取与提取大小相等的行数(可以在每个查询中设置)。它不会将整个分区带到内存中。集群键在分区内排序时仍然很有用,即使阅读了所有内容。@PranethGudumasu你是对的。我不需要集群列上的谓词。但是,我想知道如果提供了集群密钥范围的开始和结束,是否会提高性能。