|NO.Z.00011|——————————|BigDataEnd|——|Hadoop&OLAP_ClickHouse.V08|——|ClickHouse.v08|表引擎|MergeTree|MergTreeTTL|

一、MergTree的TTL
### --- MergTree的TTL

~~~     TTL:time to live 数据存活时间。TTL既可以设置在表上,也可以设置在列上。
~~~     TTL指定的时间到期后则删除相应的表或列,如果同时设置了TTL,则根据先过期时间删除相应数据。
### --- 用法:

~~~     TTL time_col + INTERVAL 3 DAY
~~~     表示数据存活时间是time_col时间的3天后
~~~     INTERVAL可以设定的时间:
~~~     SECOND MINUTE HOUR DAY WEEK MONTH QUARTER YEAR
二、TTL设置在列上
### --- TTL示例:

~~~     # 创建表
hadoop01 :) create table ttl_table_v1 ( id String, create_time DateTime, code String TTL create_time + INTERVAL 10 SECOND, type UInt8 TTL create_time + INTERVAL 10 SECOND ) ENGINE = MergeTree PARTITION BY toYYYYMM(create_time) ORDER BY id;

CREATE TABLE ttl_table_v1
(
    `id` String,
    `create_time` DateTime,
    `code` String TTL create_time + toIntervalSecond(10),
    `type` UInt8 TTL create_time + toIntervalSecond(10)
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(create_time)
ORDER BY id

Ok.
~~~     # 导入数据

hadoop01 :) insert into ttl_table_v1 values('A000',now(),'C1',1),('A000',now()+INTERVAL 10 MINUTE,'C1',1);

INSERT INTO ttl_table_v1 VALUES

Ok.
~~~     # 查看表

hadoop01 :) SELECT * FROM ttl_table_v1;

SELECT *
FROM ttl_table_v1

┌─id───┬─────────create_time─┬─code─┬─type─┐
│ A000 │ 2021-11-01 17:49:56 │      │    0 │
│ A000 │ 2021-11-01 17:59:56 │ C1   │    1 │
└──────┴─────────────────────┴──────┴──────┘
hadoop01 :) optimize table ttl_table_v1 FINAL;

OPTIMIZE TABLE ttl_table_v1 FINAL

Ok.
hadoop01 :) SELECT * FROM ttl_table_v1;

SELECT *
FROM ttl_table_v1

┌─id───┬─────────create_time─┬─code─┬─type─┐
│ A000 │ 2021-11-01 17:49:56 │      │    0 │
│ A000 │ 2021-11-01 17:59:56 │ C1   │    1 │
└──────┴─────────────────────┴──────┴──────┘
三、TTL设置在表上
### --- TTL设置在表上

~~~     # 创建表
hadoop01 :) create table tt1_table_v2 ( id String, create_time DateTime, code String TTL create_time + INTERVAL 10 SECOND, type UInt8 ) ENGINE = MergeTree PARTITION BY toYYYYMM(create_time) ORDER BY create_time TTL create_time + INTERVAL 1 DAY;

CREATE TABLE tt1_table_v2
(
    `id` String,
    `create_time` DateTime,
    `code` String TTL create_time + toIntervalSecond(10),
    `type` UInt8
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(create_time)
ORDER BY create_time
TTL create_time + toIntervalDay(1)

Ok.
~~~     # TTL目前没有取消方法

hadoop01 :) ALTER TABLE tt1_table_v2 MODIFY TTL create_time + INTERVAL + 3 DAY;

ALTER TABLE tt1_table_v2
    MODIFY TTL create_time + toIntervalDay(3)


Ok.
四、TTL文件说明
### --- TTL文件说明
~~~     一列数据中最小时间:2021-11-01 17:49:56 + INTERVAL的10秒钟 = 2021-11-01 17:49:56
~~~     时间戳:"min":1597839121一列数据中最大时间
~~~     2021-11-01 17:59:56 + INTERVAL的10秒钟 = 2021-11-01 17:59:56
~~~     时间戳:"max":1597839721文件ttl.txt记录的是列字段的过期时间。

[root@hadoop01 ~]# cd /var/lib/clickhouse/data/default/ttl_table_v1/202111_1_1_0/
[root@hadoop01 202111_1_1_0]# cat ttl.txt 
ttl format version: 1
{"columns":[{"name":"code","min":1635760206,"max":1635760806},{"name":"type","min":1635760206,"max":1635760806}]}
hadoop01 :) SELECT toDateTime(1635760206) AS ttl_min, toDateTime(1635760806) AS ttl_max;

SELECT 
    toDateTime(1635760206) AS ttl_min,
    toDateTime(1635760806) AS ttl_max

┌─────────────ttl_min─┬─────────────ttl_max─┐
│ 2021-11-01 17:50:062021-11-01 18:00:06 │
└─────────────────────┴─────────────────────┘
hadoop01 :) SELECT * FROM ttl_table_v1 ;

SELECT *
FROM ttl_table_v1

┌─id───┬─────────create_time─┬─code─┬─type─┐
│ A000 │ 2021-11-01 17:49:56 │      │    0 │
│ A000 │ 2021-11-01 17:59:56 │ C1   │    1 │
└──────┴─────────────────────┴──────┴──────┘

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(23)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示