clickhouse清理日志数据

  |   0 评论   |   0 浏览

一、查看日志占用磁盘空间

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 服务即可生效。


标题:clickhouse清理日志数据
作者:michael
地址:https://blog.junxworks.cn/articles/2026/05/07/1778117441108.html