clickhouse清理日志数据
一、查看日志占用磁盘空间
SELECT
t.database,
t.name AS table,
sum(p.bytes_on_disk) AS bytes,
formatReadableSize(sum(p.bytes_on_disk)) AS size_readable
FROM system.tables AS t
LEFT JOIN system.parts AS p
ON t.database = p.database AND t.name = p.table AND p.active
WHERE t.database = 'system' AND t.name LIKE '%_log'
GROUP BY t.database, t.name
ORDER BY bytes DESC;
二、手动清除trace_log
trace_log 是 ClickHouse 内部的 “性能监控黑匣子” 。它专门用于 记录每条查询在执行过程中的详细性能指标 ,主要作用是为性能诊断和慢查询分析提供最细粒度的数据。trace_log是空间大户,如果太多了,需要手动清理。
--直接全清
TRUNCATE TABLE system.trace_log SETTINGS max_table_size_to_drop = 0;
--或者指定范围删除
ALTER TABLE system.trace_log DELETE WHERE event_date < '2025-11-01';
三、设置trace_log自动过期策略
ALTER TABLE system.trace_log MODIFY TTL event_date + INTERVAL 30 DAY;
在 /etc/clickhouse-server/config.d/ 目录下,创建一个新配置文件(例如 trace_log_ttl.xml),写入以下内容
<clickhouse>
<trace_log>
<database>system</database>
<table>trace_log</table>
<partition_by>toYYYYMM(event_date)</partition_by>
<ttl>event_date + INTERVAL 30 DAY DELETE</ttl>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
</trace_log>
</clickhouse>
完成配置后,重启 ClickHouse 服务即可生效。