是否可以为现有的cassandra表设置默认生存时间,并使用cql将此ttl应用于表中的所有现有记录

dced5bon  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(352)

我的要求是5天后把记录清理掉。我已经创建了一个表,但没有将此时间设置为表级别的活动配置。现在我想为表和表上的现有记录设置它。

zzwlnbp8

zzwlnbp81#

您可以为表设置一个默认的ttl,但是无法返回并将没有ttl的记录更改为具有ttl(即,默认ttl将对插入期间没有ttl的记录应用一个ttl值)。在您的例子中,在表级别设置了缺省ttl之后,您必须在表中的任何行被认为“过时”之后,手动查找并删除带有code/cql/etc的行。这将创建墓碑,如果有“压倒性”数量的行有墓碑,您可能会看到性能问题和失败。压缩最终将清理它们,或者您可以自己手动压缩它们(如果生成的单个sstable很大,还可以重新拆分)。
如果这个表是一个只插入的表类型,并且总是有ttl,那么您可能需要考虑twcs。它将显著减少压缩工作负载,还为您提供了清理没有ttl的数据的其他选项。
希望这有帮助。
-吉姆

相关问题