谁能解释一下 TTL 是如何工作的
对于 TWCS,我看到这个过程是这样的:
- 在时间窗口 1 内,我们有带有一些 ttl 的数据(在 SSTable1 中)
- 然后在时间窗口 N 内,来自 SSTable1 的数据的 ttl 已过期
- 它创建了一个用 SSTableN 编写的墓碑女巫?
但是,如果 SSTable1 和 SSTableN 由于来自不同的时间窗口而无法压缩,如何删除 SSTable1?
来自文档:TWCS 的主要动机是通过时间戳分隔磁盘上的数据,并允许完全过期的 SSTables 更有效地删除
来自文档:一旦 TTL 过期,数据将转换为墓碑,该墓碑至少保留 gc_grace_seconds
(转换?)
是的,当使用 TTL 写入数据时,带有未来到期日期的墓碑将与数据本身一起插入。这意味着数据和墓碑是在同一个时间窗口中写入的,因此它们都在同一个 SSTable 中。
由于墓碑和数据存储在一起,因此
TimeWindowCompactionStrategy
“知道”SSTable 中的所有数据都已过期并且可以简单地删除它。干杯!