...
经常有客户咨询MPP占用了很多的磁盘空间,该怎么清理MPP占用的空间?
解决方案
通常是由于生成的抽取自动备份的表太多,占用的空间较多导致,可先运行下述sql查询Clickhouse中smartbimpp数据库的每个表的占磁盘的空间大小:如若是和bi相关的,通常是由于以下几种原因生成:
1、生成的抽取自动备份的表太多,占用的空间较多;
2、历史遗留的一些数据异常的表没来及得清除;
3、抽取临时表没有及时清理掉。
方案一
对于CH的版本为21及以上版本,可先运行下述sql查询Clickhouse中smartbimpp数据库的每个表的占磁盘的空间大小:
无格式 |
---|
select database, table , rows, FLOOR( bytes_on_disk / 1024 / 1024) as MB_on_disk, FLOOR( data_compressed_bytes / 1024 / 1024) as MB_data_compressed, FLOOR( data_uncompressed_bytes / 1024 / 1024) as MB_data_uncompressed from system.parts p where database = 'smartbimpp' order by bytes_on_disk DESC |
...
无格式 |
---|
select
database,
table ,
rows,
FLOOR( bytes_on_disk / 1024 / 1024) as MB_on_disk,
FLOOR( data_compressed_bytes / 1024 / 1024) as MB_data_compressed,
FLOOR( data_uncompressed_bytes / 1024 / 1024) as MB_data_uncompressed
from
system.parts p
order by
bytes_on_disk DESC
|
方案二
1、进到Mppdata/data的目录下,执行以下命令:
代码块 |
---|
du -h --max-depth=1|sort -rh |
执行上述命令,可以对表目录大小进行排序,如下所示,是从大到小排序,并将结果输出到文件中方便分析:
代码块 |
---|
du -h --max-depth=1|sort -rh >table_size.txt |
2、将输出的文件打开进行分析。
(1)大表清理:系统上可以查下这些数据集id(下划线前面的),和用户确认下是否还在使用:
(2)临时表清理:以上述数据为模版,从生成的文件中过滤出表名中带下划线的,表名带I8a的,不带_temp的进行删除:
可将需要删除的表通过执行sql文件的方式进行删除,sql文件内容示例如下:
将上述内容保存在sql文件后,在clickhouse服务器上,用clickhouse-client命令行,执行sql文件清除:
代码块 |
---|
clickhouse-client --user 登录名 --password 密码 -d 数据库 --multiquery < /usr/local/drop_tables.sql |
或者如果清理后过一段时间还是发现持续增长,那么需要在数据目录里面,每个目录都查询一下,看看哪个目录占用比较大的空间。将对应的占用情况发回继续分析。数据目录里面,每个目录都查询一下,看看哪个目录占用比较大的空间数据目录里面,每个目录都查询一下,看看哪个目录占用比较大的空间。
...