是否可以为现有Cassandra表设置默认生存时间,并将此TTL应用于具有CQL的表中的所有现有记录



我的要求是在5天后清除记录。我已经创建了一个表,但这次没有设置为表级别的实时配置。现在我想为表以及表上的现有记录设置它。

您可以为表设置默认TTL,但无法返回并更改没有TTL的记录以具有TTL(即,默认TTL将对插入时间期间没有TTL值的记录应用TTL值(。在您的情况下,在表级别设置默认TTL后,您将不得不手动查找并删除表中代码为/cql/etc的任何行,因为这些行被认为是"过时的"。这将创建逻辑删除,如果有"压倒性"数量的行具有逻辑删除,您可能会看到性能问题和故障。压实最终会清理它们,或者你可以自己用手动压实来清理它们(如果单个生成的sstable很大,可能会再次重新拆分(。

如果此表是INSERT ONLY类型的表,并且始终具有TTL,则可能需要考虑TWCS。它将显著减少压缩工作负载,还为您提供了其他选项来清理没有TTL的数据。

希望这能有所帮助。

-Jim

最新更新