删除大量数据后,Cassandra查询查询速度非常慢

时间:2013-09-26 03:43:10

标签: performance cassandra tombstone

目前,我有一个cassandra列系列,包含大量数据,超过100,000个。现在,我想删除此列族中的所有数据,问题出现了:

删除所有数据后,我在此列族中执行查询查询,cassandra将花费数十秒来返回空查询结果。当原始数据较大时,时间成本将线性增加

从cassandra数据库中删除数据时,它是由逻辑删除功能引起的。在下一个GC被触发之前,查找速度将无法恢复正常。见Cassandra Distributed Deletes

由于此类查询操作经常在我的系统中使用,因此我无法承受长达几秒的巨大延迟。

请你帮我解决这个问题?

2 个答案:

答案 0 :(得分:3)

这听起来像是使用数据库的一种非常糟糕的方式。填充它,清空它,重复。解决问题的一种方法是每次使用不同的CF名称,例如在清空数据并开始重新填充数据时,创建一个新的列族并使用它,然后删除另一个colum系列然而这是hacky

我建议使用压缩(gets rid of all the tombstones it can detect)来解决您的问题,它是CPU密集型的,但它比等待几十秒的查询响应要好。您可以通过提供特定的ks& amp; amp; cf你想紧凑:

./nodetool compact <ks_name> <cf_name>

Ritchard的观点很好,默认情况下gc_grace_seconds设置为10天,所以你可能需要调整它以允许压缩以消除墓碑。

答案 1 :(得分:0)

@Fify

如果您的列系列经常修改(阅读然后更新然后再次阅读更新...),您应该使用 leveled compaction strategy

要更快删除已删除的列,请更改列族的 gc_grace_seconds 属性