从Cassandra读取一个完整分区是否昂贵?

时间:2020-01-29 19:03:45

标签: database cassandra cassandra-2.0 cassandra-3.0

假设我有一张桌子

RecordingsByAccountaId(AccountId,a,b,c,x,y,z)

分区键:AccountId 聚类键:a,b

我需要在代码中获取一个帐户的数据,因此执行

从RecordingsByAccountaId中选择*,其中accountId ='accountId';

这是一项昂贵的操作吗?

目标是更新此表的2-3行,但是除了accountId之外,我没有其他信息。

查询一行或整个分区几乎相同吗?因为我看到在200行与n行之间取回的时间相差20-30毫秒?

1 个答案:

答案 0 :(得分:1)

这主要取决于分区的大小-分区包括多少行。另一个因素是分区的碎片程度-它位于单个SSTable(已压缩)中还是位于多个SSTable中,因此您将从多个文件中读取数据。

但是,通常,读取单个文件中的分区是顺序操作,因为属于同一分区的所有行都是顺序写入的,并且如果分区的大小不是很大,那么性能就不会受到很大的影响(但这可能还取决于您的硬件。)

P.S。您如何决定要更新的行?