Clickhouse日志清理

639 words

背景

Clickhouse有很多系统表,其中包含了很多日志表,比如query_log、query_thread_log、trace_log。

默认情况下,ClickHouse不清理日志,因此随着时间推移,这些表会占用大量磁盘空间。

image-20220908100840263

可以通过以下语句查询system中的各个表大小:

1
2
3
4
5
6
7
SELECT 
sum(rows) AS `总行数`,
formatReadableSize(sum(data_uncompressed_bytes)) AS `原始大小`,
formatReadableSize(sum(data_compressed_bytes)) AS `压缩大小`,
round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS `压缩率`,
`table` AS `表名`
FROM system.parts where database = 'system' group by `table`

image-20220908100549528

解决方法

从查询的结果可以看到 query_logquery_thread_log占比比较大,需要进行清理。

可以通过设置相应日志表的TTL来清理:

1
2
3
#保存一个月的数据
ALTER TABLE query_log MODIFY TTL event_date + toIntervalMonth(1);
ALTER TABLE query_thread_log MODIFY TTL event_date + toIntervalMonth(1);

image-20220908133700170

Comments