大道至简,知易行难
广阔天地,大有作为

Clickhouse清理大日志表

ClickHouse有很多系统表(见参考文档1),如query_log、query_thread_log、trace_log等。默认情况下,ClickHouse永远不会清理日志,因此这些表可能占用大量磁盘空间。我们可以使用如下的SQL查看:

ClickHouse的大日志表

ClickHouse的大日志表

官网推荐的方法是在配置文件中配置对应的TTL,文档为:https://clickhouse.com/docs/en/operations/server-configuration-parameters/settings#max-table-size-to-drop

这里面有个模糊的问题在于,看默认的配置文件时,我们会发现query_log、trace_log、query_thread_log、query_views_log、part_log看上去是有event_date字段的,而metric_log、asynchronous_metric_log、session_log看上去没有event_date字段。不过,通过SHOW CREATE TABLE我们也可以确定metric_log、asynchronous_metric_log、session_log实际都是分区和有event_date字段的。

这些系统表都是分区的,分区信息可以在system.parts里查询到:

进行查看,默认情况下按月存储:

ClickHouse的大日志表2

ClickHouse的大日志表2

因此,为了保证删除的效率,我们可以直接删除分区,如:

当分区太大时删除会报错,如:

ClickHouse清理大日志表3

ClickHouse清理大日志表3

按提示2选1操作即可。唯一需要注意的是如果生成文件的话只能用一次就会自动删掉,因此还是改配置文件好:

ClickHouse清理大日志表4

ClickHouse清理大日志表4

 

参考文档:
1、https://clickhouse.com/docs/zh/operations/system-tables/#system-tables-introduction

 

转载时请保留出处,违法转载追究到底:进城务工人员小梅 » Clickhouse清理大日志表

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址