clickhouse日志表占用大量磁盘空间

文章讲述了如何处理Clickhouse的日志表,尤其是query_log和query_thread_log占用大量磁盘空间的问题。作者尝试通过删除分区来释放空间,但遇到超过50G的数据分区无法直接删除的限制。为了解决这个问题,采用了设置force_drop_table标志的Linux命令来强制删除大分区,但指出每次删除都需要执行该命令,这是一个不便之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

clickhouse日志表占用大量磁盘空间

sql:
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;

在这里插入图片描述
query_log也占用了200多个G已经删过了。现在开始删除query_thread_log然后做下记录。
通过一下sql确认下query_thread_log的分区:
SELECT * FROM system.parts where database = ‘system’ and table= ‘query_thread_log’;
可以看到分区也是年月
可以看到query_thread_log表的分区也是年月格式的。
然后使用下面sql使用删除分区的方式开始删除数据

alter table system.query_thread_log drop partition ‘202303’;

ps通过删除分区的方式删除数据的效率会高一点,然后问题来了当我删去耨个分区的数据的时候报错了
在这里插入图片描述
这个分区的数据超过50G,ck处于保护机制,是禁止这样删除大数据的表格的。

然后在clickhouse所在的服务器上执行下面的命令:
sudo touch /home/clickhouse/flags/force_drop_table && sudo chmod 666 /home/clickhouse/flags/force_drop_table
注意此处的目录是使用错误提示的这个目录,因为我更改了clickhouse的默认数据存储目录,所以可能跟你提示的不一样
然后再中alart删除语句。

ps:然后有一个恶心的地方就是每需要删除一个大数据的分区的时候都需要执行一遍上述的linux命令 恶心~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值