首页 > 编程知识 正文

clickhouse查询,clickhouse原理

时间:2023-05-06 06:09:01 阅读:175213 作者:88

什么是TTL? TTL的意思是Time To Live表示数据的生存时间。 由于数据的价值与保留期成反比,因此从存储成本的角度来看,通常只能保留将近一年的数据。 在MergeTree引擎中,通过设置TTL可以轻松管理数据的生存时间,使数据的价值最大化。 当然,不会删除几仓的数据,但有些业务不需要旧数据。 例如,用户的图像数据中,用户的图像每天每小时更新,或者实时更新。 如果不值得继续保存旧的图像数据,就需要删除。

在ClickHouse中,TTL可以设置值的生命周期。 TTL可以在整个表中设置,也可以在每个列字段中单独设置。 表级TTL还指定了自动将数据传输到磁盘和卷的逻辑。 TTL表达式的计算结果必须是日期(date )或日期/时间,如果同时设置了列级TTL和表级TTL,则基于先前过期的TTL。

字段级TTL列字段的值过期时,ClickHouse将使用数据类型的默认值替换。 如果分区中列的所有值都已过期,ClickHouse将从文件系统中删除该列。 ClickHouse的间隔(数据时间间隔)支持的操作包括second (秒)、minute (分钟)、hour (小时)、day (天)、week (周)、month (月)、que (月)

例如:

#创建时使用ttlcreatetableexample _ table (d datetime,a Int TTL d INTERVAL 1 day,b Int TTL d INTERVAL 1 day, c String )指定engine=mergetreeepaaaay的# ttlaltertableexample _ tablemodifycolumn ` c ` 更改stringTTLdtointervalday(1)列字段中ttlaltertableexample _ tablemooday的表级TTL表包含删除旧行的表达式以及磁盘或卷上的数据表中的行过期后,ClickHouse会删除所有对应的行。

示例:自动删除event_date超过一个月的数据

#创建时使用ttlcreatetableexample _ table (event _ date ` date,` uid` Int32, ` name ` string (engine=replicatedaggregatingmergetree (/click house/tables/{ shard }/example _ table ), ' { replica } ' (partitionbyevent _ dateorderbyuidttlevent _ datetointervalmonth (1) SETTINGS index_granularity=128; #修改表中的TTL,event_date超过3个月的数据自动更新为altertableexample _ tablemodifyttlevent _ datetointervalmonth (3); 创作很难,喜欢的话请夸奖关注哦! 阿里加德,各位!

参考文章: clickhouse官方文档

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。