使用复合分区键与聚类列对Cassandra查询的性能考虑

时间:2017-05-18 17:37:49

标签: cassandra

我有以下DDL:

CREATE TABLE mykeyspace.mytable (
a text,
b text,
c text,
d text,
e text,
starttime timestamp,
endtime timestamp,
PRIMARY KEY ((a, b, c), d, e, starttime, endtime)
) WITH CLUSTERING ORDER BY (d ASC, e ASC, starttime ASC, endtime ASC)

我只有以下SELECT / DELETE查询:

SELECT */DELETE FROM mytable WHERE a = ? AND b = ? AND C = ? AND d = ?;

我只是想知道列d是否可以作为复合分区键的一部分包含在内,所以行查找就足够了,而不是行查找+群集列查找?在这种情况下,它也会提高性能吗?

2 个答案:

答案 0 :(得分:1)

复合分区键中的列d包含绝对可以提高性能

  • 您的数据将在群集中很好地分发。
  • 您的SELECT查询速度更快,无需进行群集级别过滤
  • 您的DELETE查询会将该分区标记为markedForDeleteAt,而不是插入范围逻辑删除

答案 1 :(得分:0)

我觉得PARTITION KEY中的列越多越好。

所以我的建议是在PARTITION KEY中包含尽可能多的列。它通常会改善SELECT查询性能,并且也会避免一些逻辑删除问题(因为你将在分区级别删除,除非你当然重新创建分区)。