首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >ClickHouse | TTL策略

ClickHouse | TTL策略

作者头像
Java小技巧
发布2024-11-23 09:50:51
发布2024-11-23 09:50:51
3640
举报
文章被收录于专栏:Java小技巧Java小技巧
背景描述

近期因CK中query_log表空间占用过大问题,导致磁盘使用率很高,通过查阅资料发现可以通过TTL策略进行清理。同时补充了一些相关的查询SQL,以及注意事项(供参考)。

TTL策略
代码语言:javascript
复制
alter table system.表名 modify TTL 日期字段 + INTERVAL 天数 DAY;

设置ttl策略的表必须有日期字段,DAY可调整为月、年。

注意事项
  • CK服务启停后,设置TTL策略的表会自动物理化,生成 “表名_序列”(query_log_0)的临时表
  • 设置TTL策略时,需要先确认表的占用情况,以及物理磁盘占用情况
    • 假设180天之前的表数据占用50G,清理时磁盘空间会增加约100G的占用空间,会慢慢自动释放,周期约1H
    • 建议在清理表占用空间时,如果数据无需可直接执行truncate
  • 执行truncate表释放空间时,如果表数据超过50G,无法执行。需要先清理表数据(drop表分区),小于50G时可执行truncate
  • CK命令行执行SQL脚本时不能有换行,同时以分号结尾
  • CK命令行脚本执行超时时间300秒
其他相关SQL
# 查看系统表占用大小
代码语言:javascript
复制
select table, formatReadableSize(sum(bytes)) as size from system.parts where  active group by table;
# 查看单表占用大小
代码语言:javascript
复制
select formatReadableSize(sum(bytes)) as size from system.parts where table = '表名' ;
# 查看表分区
代码语言:javascript
复制
select * from system.parts where table = '表名' ;
# 删除表分区
代码语言:javascript
复制
alter table system.表名 drop partition 分区维度;
# 清理表数据
代码语言:javascript
复制
truncate table system.表名;
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java小技巧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景描述
  • TTL策略
  • 注意事项
  • 其他相关SQL
    • # 查看系统表占用大小
    • # 查看单表占用大小
    • # 查看表分区
    • # 删除表分区
    • # 清理表数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档