(本文档仅供参考)
问题
经常有客户咨询MPP占用了很多的磁盘空间,该怎么清理MPP占用的空间?
解决方案
通常是由于生成的抽取自动备份的表太多,占用的空间较多导致,可先运行下述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
如下图红框所示表示占用的磁盘空间,可以找到后缀为“_bak”的表,此类后缀的表名表示的是自动备份的表,可直接运行drop命令删除不用的备份表:
另外,drop table后,clickhouse会有个后台进程来删除表的数据,要这个进程完成后,数据才会被删除,空间才会被释放,也可以通过show processlist查看是否有正在运行的服务。
如是通过上述sql查询到的表占的空间都不大,也可以查询下述红框所示的每个库的空间占用情况,看看哪个库占用的内存大:
或者如果清理后过一段时间还是发现持续增长,那么需要在数据目录里面,每个目录都查询一下,看看哪个目录占用比较大的空间。将对应的占用情况发回继续分析。数据目录里面,每个目录都查询一下,看看哪个目录占用比较大的空间数据目录里面,每个目录都查询一下,看看哪个目录占用比较大的空间