[ClickHouse 运维系列] 数据 TTL 学习笔记整理

一、clickhouse TTL

ClickHouse的MergeTree引擎支持数据生命周期管理,即TTL(Time To Live)。TTL可以通过设置列字段或整张表的过期时间来实现。列字段的TTL会在时间到期时删除该列数据,而表级别的TTL会删除整张表的数据。如果同时设置了列级别和表级别的TTL,那么先到期的设置将被优先执行。TTL的设置依赖于日期或时间类型的字段,通过INTERVAL操作来指定数据的存活时间。

  • ClickHouse中分为表级TTL和列级TTL, 表级TTL就是表中的某些行数据到期了,会自动删除;列级TTL则是对表中的某些字段设置过期时间,一旦过期,表中的该字段则会变成0。
  • 只谈表级TTL,因为列级TTL基本很少用,用的时候百度下就可以了。
  • 涉及判断的字段,下面语句的create_time, 必须是 Date 或者 Datetime 类型,推荐使用分区的日期字段。
  • 建表时,指定表级TTL, 下面语句中,说明只保留create_time值是1月内的数据。
  • 使用过期时间的单位:SECOND、MINUTE、MINUTE、DAY、WEEK、MONTH、QUARTER YEAR

二、验证测试

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [root@prod``-ck``-01 ~]``# clickhouse-client --host 10.110.5.135 --port 9000 --user default --password 'xxx!' -m ClickHouse client version 22.9.4.32 (official build). Connecting to 10.110.5.135:9000 as user default. Connected to ClickHouse server version 22.9.4 revision 54460. Warnings: ``* Some obsolete setting is changed. Check ``'select * from system.settings where changed' and read the changelog. prod``-ck``-01 :) CREATE TABLE ckdb.student( ``id UInt32, ``stu_id String, ``total_score Decimal(16,2), ``create_time Datetime ``) ENGINE = MergeTree ``PARTITION BY toYYYYMMDD(create_time) ``PRIMARY KEY (id) ``ORDER BY (id, stu_id) ``TTL create_time + INTERVAL 1 MONTH DELETE; CREATE TABLE ckdb.student ( ````id UInt32, ` ````stu_id` String, ````total_score Decimal(16, 2), ` ````create_time` Datetime ) ENGINE = MergeTree PARTITION BY toYYYYMMDD(create_time) PRIMARY KEY id ORDER BY (id, stu_id) TTL create_time + toIntervalMonth(1) Query id: dcfbc78f-9d7a-47fc-a52e-4abf7bbd0149 Ok. 0 rows in ``set``. Elapsed: 0.014 sec. prod``-ck``-01 :) INSERT INTO ckdb.student VALUES ``(1, ``'S001'``, 95.5, ``'2024-03-01 10:00:00'``), ``(2, ``'S002'``, 87.0, ``'2024-04-01 10:00:00'``), ``(3, ``'S003'``, 78.0, ``'2024-05-01 10:00:00'``), ``(4, ``'S004'``, 88.5, ``'2024-06-01 10:00:00'``), ``(5, ``'S005'``, 92.3, ``'2024-07-01 10:00:00'``); INSERT INTO ckdb.student FORMAT Values Query id: 14238ade-d4c1-45ff-9108-2ff0c7644c64 Ok. 5 rows in ``set``. Elapsed: 0.026 sec. prod``-ck``-01 :) ``SELECT * FROM ckdb.student; SELECT * FROM ckdb.student Query id: 6e83b672-834b-4274-a899-9f0db6007a32 ┌─id─┬─stu_id─┬─total_score─┬─────────create_time─┐ │ 3 │ S003 │ 78 │ 2024-05-01 10:00:00 │ └────┴────────┴─────────────┴─────────────────────┘ ┌─id─┬─stu_id─┬─total_score─┬─────────create_time─┐ │ 5 │ S005 │ 92.3 │ 2024-07-01 10:00:00 │ └────┴────────┴─────────────┴─────────────────────┘ ┌─id─┬─stu_id─┬─total_score─┬─────────create_time─┐ │ 4 │ S004 │ 88.5 │ 2024-06-01 10:00:00 │ └────┴────────┴─────────────┴─────────────────────┘ 3 rows in ``set``. Elapsed: 0.009 sec. prod``-ck``-01 :) INSERT INTO ckdb.student VALUES ``(6, ``'S006'``, 85.0, ``'2022-01-01 10:00:00'``), ``(7, ``'S007'``, 90.0, ``'2022-02-01 10:00:00'``); INSERT INTO ckdb.student FORMAT Values Query id: 7386f602-849f-42f7-a347-b733062fa7aa Ok. 2 rows in ``set``. Elapsed: 0.011 sec. prod``-ck``-01 :) ``SELECT * FROM ckdb.student; SELECT * FROM ckdb.student Query id: 30672af4-ef29-4bf7-814f-ba32406d34b1 ┌─id─┬─stu_id─┬─total_score─┬─────────create_time─┐ │ 5 │ S005 │ 92.3 │ 2024-07-01 10:00:00 │ └────┴────────┴─────────────┴─────────────────────┘ ┌─id─┬─stu_id─┬─total_score─┬─────────create_time─┐ │ 3 │ S003 │ 78 │ 2024-05-01 10:00:00 │ └────┴────────┴─────────────┴─────────────────────┘ ┌─id─┬─stu_id─┬─total_score─┬─────────create_time─┐ │ 4 │ S004 │ 88.5 │ 2024-06-01 10:00:00 │ └────┴────────┴─────────────┴─────────────────────┘ 3 rows in ``set``. Elapsed: 0.009 sec. |

相关推荐
普宁彭于晏43 分钟前
元素水平垂直居中的方法
前端·css·笔记·css3
whoarethenext1 小时前
C++ OpenCV 学习路线图
c++·opencv·学习
m0_637146931 小时前
计算机网络基础总结:TCP/IP 模型、TCP vs UDP、DNS 查询过程
笔记·tcp/ip·计算机网络
恰薯条的屑海鸥1 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十四期-XXE模块)
网络·学习·安全·web安全·渗透测试
Lester_11012 小时前
嵌入式学习笔记 - freeRTOS vTaskPlaceOnEventList()函数解析
笔记·学习
moxiaoran57533 小时前
uni-app学习笔记二十三--交互反馈showToast用法
笔记·学习·uni-app
scdifsn10 小时前
动手学深度学习12.7. 参数服务器-笔记&练习(PyTorch)
pytorch·笔记·深度学习·分布式计算·数据并行·参数服务器
恰薯条的屑海鸥10 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十六期-SSRF模块)
数据库·学习·安全·web安全·渗透测试·网络安全学习
喜欢吃燃面11 小时前
C++刷题:日期模拟(1)
c++·学习·算法
2301_7976042412 小时前
学习记录:DAY32
学习