TTL即Time To Live 表示数据的存活时间。
在MergeTree中,可以为某个列字段或者整张表设置TTL。
当时间达到时,若列字段级别的TTL 则会删除这一列的数据。
若表级别的TTL则会删除整张表的数据;若同时设置了列级别的和表级别的TTL则以先到期的为准。
无论列级别还是表级别的TTL,都需要依托某个Datetime或者date类型的字段,通过对这个时间字段的INTERVAL操作来表述TTL的过期时间。
设置示例:
TTL day + toIntervalYear(3) //表示数据存活的时间为day时间的3年之后。
--实际建表语句
CREATE TABLE stat_day
(
day DateTime,
cnt Int32
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(day)
ORDER BY day
TTL day + toIntervalYear(3)
SETTINGS index_granularity = 8192
Clickhouse修改TTL示例:
ALTER TABLE stat_day MODIFY TTL day + toIntervalYear(5);
//表示将day的时效性修改为5年。