1. ClickHouse 的ttl理解
1.TTL即Time To Live 表明数据的存活时间。在MergeTree中,可以为某个列字段或者整张表设置TTL。
2.当时间达到时,若列字段级别的TTL 则会删除这一列的数据;
3.若表级别的TTL则会删除整张表的数据;
3.若同时设置了列级别的和表级别的TTL则以先到期的为准。
4.无论列级别还是表级别的TTL,都需要依托某个Datetime或者date类型的字段,通过对这个时间字段的INTERVAL操作来表述TTL的过期时间:
2. 列级别的ttl
根据时间create 列的时间, 对id 和name 的列进行ttl 过一分钟后就将值销毁掉,
注意: int 类型销毁后值为0 String 销毁后值为空。
CREATE TABLE ttl_table_column
(
createtime DATETIME,
id INT TTL createtime + INTERVAL 1 MINUTE,
name String TTL createtime + INTERVAL 1 MINUTE,
address String
)
ENGINE = MergeTree
ORDER BY createtime ;
insert into ttl_table_column values (now(), 1, value1 , ccc1 );
insert into ttl_table_column values(now(), 2, value2 , ccc2 );
3. 表级别的ttl
CREATE TABLE ttl_table
(
createtime DateTime,
id Int,
name String,
address String
)
ENGINE = MergeTree
ORDER BY createtime
TTL createtime + INTERVAL 1 MINUTE DELETE;
-- 插入数据
insert into ttl_table values (now(), 1, value1 , ccc1 );
insert into ttl_table values(now(), 2, value2 , ccc2 );
由于MergeTree采用类似LSM tree的结构,许多存储层处理逻辑直到Compaction期间才会发生。
因此强制后台compaction执行完毕,再次查询,发现仍旧没有一条数据。
optimize table ttl_table final;
4.1 可以给表的列添加ttl
ALTER TABLE ttl_table MODIFY COLUMN name String TTL createtime + INTERVAL 1 DAY;
4.2 修改列的ttl
ALTER TABLE ttl_table MODIFY COLUMN name String TTL createtime + INTERVAL 1 MONTH;
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...





