如果结果中有很多行,则cassandra查询的延迟时间很长

时间:2018-03-16 07:16:20

标签: performance cassandra latency

exp:table schema:

Create Table tbl { 
   key int, 
   seq  int, 
   name text, 
   Primary key(key, seq) }; 

对于每个键,有多行(假设1000K); 假设我想查询特定密钥的内容,我的查询是:

select * from tbl where key = 'key1'

(实际上我在程序中使用cpp驱动程序,并使用分页界面)

结果包含1000k行,此查询的成本约为10秒。 我认为每个查询的数据都存储在磁盘上,因此返回的速度非常快。

为什么这么长时间花费?   有没有办法优化???

1 个答案:

答案 0 :(得分:0)

  

为什么花费这么长时间?

您的查询返回的行数几乎为1000K = 1000,000 = 1M 。这就是为什么它花费的时间太长了。

  

有没有办法优化???

是!! 有。

尝试在查询中使用 limit 旋转/分页

从表格定义来看,您似乎拥有一个群集密钥seq,您可以轻松使用此seq值来优化您的查询。假设聚类键(seq)具有默认的升序。将您的查询更改为:

select * from tbl where key = 'key1' and seq > [pivot] limit 100

[pivot]替换为结果集的最后一个值。对于第一个查询,请将Integer.MIN_VALUE用作[pivot]

例如:

select * from tbl where key = 'key1' and seq > -100 limit 100