如何在旧的SSTables中删除Cassandra墓碑?

时间:2018-07-13 05:38:39

标签: cassandra tombstone

如果我启用了压缩,例如SizeTieredCompaction,我的SSTables将被压缩,直到达到一定的大小级别。当我“删除” SSTable分区中的旧条目时,该条目已经很旧并且在不久的将来不会再次压缩,那么删除是什么时候进行的?

想象一下,您删除了100个条目,所有这些条目都是一个非常老的SSTable的一部分,该SSTable已被压缩几次,没有热数据,并且已经很大。直到再次压实并移除墓碑,这需要一段时间,对吗?

1 个答案:

答案 0 :(得分:2)

将逻辑删除与压缩中的数据合并时,将从磁盘中删除数据。何时发生取决于新数据的添加速度以及您的压缩策略。直到gc_grace_seconds之后才清除逻辑删除,以防止数据复活(确保在此时间内完成修复)。

如果您大量重写或删除数据,而又对磁盘上的大量过时数据不满意,则应该改用LeveledCompactionStrategy(如果使用ssds,我建议始终默认为LCS)。如果使用STCS,最大的稳定表可能需要很长的时间才能被压缩。 STCS更适合于不断追加数据(如日志或事件)。如果条目随着时间的流逝而过期,并且您严重依赖TTL,则可能要使用定时窗口策略。