美文网首页
ClickHouse引擎之 --表和列的ttl

ClickHouse引擎之 --表和列的ttl

作者: wudl | 来源:发表于2020-12-03 13:48 被阅读0次

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;

相关文章

网友评论

      本文标题:ClickHouse引擎之 --表和列的ttl

      本文链接:https://www.haomeiwen.com/subject/yipuwktx.html