TTL
只能在MergeTree系列表中使用,和分区一样,也只能在mergetree系列表中用
列: 当列的时间超过设置的值 -整列数据被删除
表: 当表中的某个写行的时间超过设置的值 -整行会被删除
定义值的存储时间。只能为MergeTree系列表指定。确定值的生存期。
当列中的值过期时,ClickHouse会将其替换为列数据类型的默认值。如果数据部分中的所有列值均已过期,则ClickHouse将从文件系统中的数据部分删除此列。
TTL可以为整个表和每个单独的列设置该子句。表级TTL也可以指定在磁盘和卷之间自动移动数据的逻辑
CREATE TABLE tb_ttl
(
ctime DateTime,
name String
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(ctime)
ORDER BY ctime
TTL ctime + INTERVAL 15 SECOND; -- 设置表过期时间为15秒
insert into tb_ttl values(now() ,'zhangsan') ;
设置列ttl
CREATE TABLE tb_ttl2
(
d DateTime,
a Int TTL d + INTERVAL 1 MONTH,
b Int TTL d + INTERVAL 1 MONTH,
c Int TTL d + INTERVAL 10 SECOND,
e String
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(d)
ORDER BY d;