1. TTL即Time To Live 表示数据的存活时间。

  2. 在MergeTree中,可以为某个列字段或者整张表设置TTL。

  3. 当时间达到时,若列字段级别的TTL 则会删除这一列的数据。

  4. 若表级别的TTL则会删除整张表的数据;若同时设置了列级别的和表级别的TTL则以先到期的为准。

  5. 无论列级别还是表级别的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年。