昨天使用命令发现磁盘使用率为100%了,还剩几十兆。
一系列神操作
备份数据库,删除实例、删除数据库表、重启mysql服务,结果磁盘空间均没有释放。
怎么办
网上查了很多资源,说要进行磁盘碎片化整理。原因是datafree占据的空间太多啦。具体可以通过这个sql查看。
SELECT CONCAT(TRUNCATE(SUM(data_length)/1024/1024,2),'MB') AS data_size,
CONCAT(TRUNCATE(SUM(max_data_length)/1024/1024,2),'MB') AS max_data_size,
CONCAT(TRUNCATE(SUM(data_free)/1024/1024,2),'MB') AS data_free,
CONCAT(TRUNCATE(SUM(index_length)/1024/1024,2),'MB') AS index_size
FROM information_schema.tables WHERE TABLE_NAME = 'datainfo';
这个是后来的图了,之前的图没有留,当时显示一张表里的data_free都达到了20个G。
网上推荐的做法如下所示,对表格进行碎片化整理。
ALTER TABLE datainfo ENGINE=InnoDB;
ANALYZE TABLE datainfo;
optimize table datainfo;
僵局: