当前位置: 首页 > news >正文

clickhouse清除system 表数据释放磁盘空间

注:clickhouse 默认系统有以下几个 log 表,如下

system.asynchronous_metric_log  
system.metric_log
system.part_log
system.query_log
system.query_thread_log
system.session_log 
system.trace_log 

如果不想看原文直接执行以下语句即可。

ALTER table `system`.asynchronous_metric_log  DELETE where event_date is not null;
ALTER table `system`.metric_log DELETE where event_date is not null;
ALTER table `system`.part_log DELETE where event_date is not null;
ALTER table `system`.query_log DELETE where event_date is not null;
ALTER table `system`.query_thread_log DELETE where event_date is not null;
ALTER table `system`.session_log DELETE where event_date is not null;
ALTER table `system`.trace_log DELETE where event_date is not null;

OPTIMIZE TABLE system.asynchronous_metric_log FINAL;
OPTIMIZE TABLE system.metric_log FINAL;
OPTIMIZE TABLE system.part_log FINAL;
OPTIMIZE TABLE system.query_log FINAL;
OPTIMIZE TABLE system.query_thread_log FINAL;
OPTIMIZE TABLE system.session_log FINAL;
OPTIMIZE TABLE system.trace_log FINAL;

问题

为什么我执行ALTER table system.asynchronous_metric_log DELETE where event_date is not null;和 truncate table system.asynchronous_metric_log; 后store 文件不见减少

📌 执行 ALTER TABLE … DELETE 或 TRUNCATE TABLE 后,为什么 store 目录文件没有减少?
当你执行以下命令:

ALTER TABLE system.asynchronous_metric_log DELETE WHERE event_date IS NOT NULL;

或者

TRUNCATE TABLE system.asynchronous_metric_log;

你可能发现 /var/lib/clickhouse/store/ 目录下的文件没有减少,或者磁盘空间没有释放。

✅ 1. DELETE 只是标记数据删除,并不会立刻释放磁盘
在 ClickHouse 里,DELETE 并不会 立即 物理删除数据,而是:

创建一个“删除标记”,表示哪些数据不再可见。
实际数据仍然存储在 store/ 目录中,但不会被查询结果返回。
数据真正删除要等到 MergeTree 进行合并(Merge)时,ClickHouse 才会清理过时数据。
🔹 解决方案:手动触发合并
你可以手动执行 OPTIMIZE 命令:

OPTIMIZE TABLE system.asynchronous_metric_log FINAL;

✅ 这会强制 ClickHouse 合并数据,并物理删除被标记为删除的数据。
✅ 2. TRUNCATE 可能只是逻辑清理,并不一定释放文件

TRUNCATE TABLE system.asynchronous_metric_log;

🔹 TRUNCATE 主要做的是:

清除 system.asynchronous_metric_log 的所有数据,使其不可见。
但 不会立刻释放磁盘空间,因为 ClickHouse 可能会延迟文件删除,以提高性能。
✅ 解决方案:手动触发磁盘回收

sudo systemctl restart clickhouse-server

这会重启 ClickHouse 服务器,并确保 ClickHouse 释放已经删除的数据文件。

✅ 3. store/ 目录中的数据文件为何不减少?
ClickHouse 采用 MergeTree 存储引擎,它不会立即删除文件,而是等到数据合并后才会清理旧文件。即使你 DELETE 或 TRUNCATE 了表,store/ 目录的文件仍然可能保留一段时间。

🔹 如何检查哪些文件仍在占用空间?

du -sh /var/lib/clickhouse/store/*

🔹 如果想立即释放空间

OPTIMIZE TABLE system.asynchronous_metric_log FINAL;

然后执行:

sudo systemctl restart clickhouse-server

结论

命令 是否释放空间? 解决方案
DELETE ❌ 不会立即释放 OPTIMIZE TABLE … FINAL; 后重启
TRUNCATE ⚠ 可能不会释放 重启 ClickHouse
OPTIMIZE FINAL ✅ 强制清理数据 确保数据合并后释放磁盘
🚀 推荐执行 OPTIMIZE TABLE … FINAL;,然后重启 ClickHouse,确保 store/ 目录清理! 🎯

相关文章:

  • 内容中台智能推荐服务创新路径
  • 网上怎么样可以挣钱,分享几种可以让你在家赚钱的兼职项目
  • 开发过程中的网络协议
  • SpringMVC(八)Knife4j 接口文档
  • XML 树结构
  • 爬虫逆向:逆向中用到汇编语言详细总结
  • 网络层协议
  • 教育直播培训系统源码解析:核心功能与实现方式
  • Android Room 框架公共模块源码深度剖析(四)
  • React Native 如何使用 Expo 快速开发?
  • 《C#上位机开发从门外到门内》3-2::Modbus数据采集系统
  • 缓存相关内容
  • 为wordpress核心functions文件瘦身
  • windows常用cmd命令
  • 【Unity3D】Addressables使用流程
  • S32K144入门笔记(十一):PDB的解读
  • 深度学习处理时间序列(1)
  • Unity物理射线滤除某层
  • FPGA中级项目1——IP核(ROM 与 RAM)
  • 黑马JUC学习笔记-上
  • 遍体鳞伤就是击不倒,这是国米老男孩最后的倔强
  • 美乌矿产协议预计最早于今日签署
  • 马上评丨上热搜的协和“4+4”模式,如何面对舆论审视
  • 病人有头发,照护者不发疯:《黑镜》中的身体缺席与虚伪关怀
  • 北汽蓝谷一季度净亏损9.5亿元,拟定增募资不超60亿元
  • 流浪猫给车主造成困扰,长春一小区拟投药应对?律师:此举欠妥