Clickhouse 之TTL


TTL 即 Time To Live, MergeTree 提供了可以管理数据或者列的生命周期的功能,TTL用于设置值的生命周期,它既可以为整张表设置,也可以为每个列字段单独设置。

列级别 TTL

要定义TTL,必须要使用时间间隔操作符,如下所示
TTL date_time + INTERVAL 5 SECONDS
TTL date_time + INTERVAL 15 HOUR
TTL date_time + INTERVAL 1 MONTH
➢ 创建测试表

create table t_order_mt2(
id UInt32,
sku_id String,
total_amount Decimal(16,2) TTL create_time+interval 10 SECOND,
create_time Datetime
) engine =MergeTree
partition by toYYYYMMDD(create_time)
primary key (id)
order by (id, sku_id);

➢ 插入数据(注意:根据实际时间改变)

insert into t_order_mt2 values
(106,'sku_001',1000.00,'2020-06-12 22:52:30'),
(107,'sku_002',2000.00,'2020-06-12 22:52:30'),
(110,'sku_003',600.00,'2020-06-13 12:00:00');

➢ 手动合并, 查看效果 到期后,指定的字段数据归 0
在这里插入图片描述

表级 TTL

➢ 创建测试表

CREATE TABLE stu
(
    id Int32 ,
    name String ,
    create_time DateTime
    
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(create_time)
ORDER BY id    TTL create_time + INTERVAL 30  SECOND DELETE ;  

表级TTL只不过是把TTL直接定义在了表外,相对于对全局的一个TTL定义,最后的DELETE 可加可不加,默认到期了整行数据都会删除.

insert into  stu values
(100,'tom',now()),
(101,'jack',now()),
(102,'mary',now()),

手动触发强制合并可以发现已经过期的数据被整行删除了.
适用场景:
数仓建设需要考虑数据的生命周期问题,数据的生命周期包括数据最初的写入,存储,处理,查询,归档和销毁几个基本的阶段。
实际中数仓数据量的成倍增长对数据存储治理是一个巨大的挑战,clickhouse这样的一个设计,可以有效处理解决数据有效的存储周期和销毁的问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值