在Cassandra中使用TTL的多列数据开销如何工作?

时间:2017-12-14 15:40:05

标签: cassandra cql ttl

在Cassandra(here)过期数据的文档中,提到了

  

与标准数据相比,过期数据在内存和磁盘上有8个字节的额外开销(记录TTL和到期时间)。

如果在表级别设置TTL(生存时间),这是否意味着对于每个数据条目,内存和磁盘上的开销增加8个字节,乘以列数,或者& #39; s与列数无关?

例如,在文档中,还可以找到示例here以确定列的TTL,即使数据插入多于1列并且TTL是为插入的实际数据条目定义的,而不是以每列为基础。

2 个答案:

答案 0 :(得分:2)

根据Cassandra documentation,在创建表部分,它说:

  

default_time_to_live

     

TTL(生存时间),以秒为单位,其中为零   禁用。指定时,将为生存时间(TTL)设置该值   表格中每列的标记;默认值:0。当表   超出TTL,表格被墓碑化。

这意味着当您为表定义TTL时,它对每个列(主键除外)都有效。

答案 1 :(得分:2)

不,至少不再这样了。该文档已过时,仅与3.0之前相关。

目前,如果分区中的所有列或分区中的行在插入时都设置了相同的TTL,则只需为其设置一次。如果它们被存储,则它们从sstables minTimestamp写为delta编码为无符号变量int,而不是8个字节。