首页 > 解决方案 > 改变 Cassandra 表属性“default_time_to_live”的幕后会发生什么?

问题描述

我阅读了许多关于“default_time_to_live”属性的文档和博客,但我不确定如果我在 Cassandra 集群中具有 TB 数据的现有表上“更改”此属性,它会产生什么影响?这是否会影响通过“UPDATE”查询设置了 TTL 的现有数据,或者幕后究竟发生了什么。

此属性是否仅影响该表的元数据,并且仅适用于设置该属性后将被索引的行?

ALTER TABLE test WITH default_time_to_live = 86400;

标签: cassandracassandra-3.0

解决方案


如果你还记得,SSTables 是不可变的——一旦写入磁盘,它们就永远不会再改变。

当您更改表的默认 TTL 时,新的过期时间将仅适用于新的 mutation。Cassandra 不会将新的 TTL 追溯应用于已写入磁盘的数据,因此现有的 SSTables 不会更改。

如果要更新现有数据的 TTL,则需要编写 ETL 应用程序(最好是 Spark 作业)。干杯!


推荐阅读