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

Fif*_*ify 5 performance cassandra tombstone

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

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

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

因为在我的系统中经常使用这种查询操作,所以我无法承受长达几秒钟的巨大延迟.

你能帮我解决这个问题吗?

Lyu*_*rov 3

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

我建议使用压缩(摆脱它可以检测到的所有墓碑)来解决您的问题,它是 CPU 密集型的,但它比等待数十秒查询响应要好。您可以通过提供要压缩的特定 ks 和 cf 来减少机器上的任务强度:

./nodetool compact <ks_name> <cf_name>
Run Code Online (Sandbox Code Playgroud)

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