MySql表重建-释放存储空间

对mysql比较大的业务表进行删除,这样容易生产比较多的存储碎片,导致存储空间无法充分利用,回收闲置的数据库空间,把分散存储的数据和索引重新挪到一起(defragmentation),对I/O速度有好处。

以我司的实际表为例:对历史数据(表:tf_test)删除之后(delete操作),查看tf_test.ibd文件大小是6.2G;也可以用一下SQL查询,但是查询的结果没有直接查看文件大小准确

select concat(round(sum(data_length/1024/1024),2),'MB') from information_schema.TABLES where TABLE_NAME='tf_test';

执行重建命令之后:

alter table tf_test engine=InnoDB;

查看tf_test.ibd文件大小是1.5G,释放了4.7G空间。

也可以用这个命令进行重建

optimize table tf_test;

你可能感兴趣的:(mysql,数据库,sql)