美文网首页
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