Mysql优化碎片空间
mysql的表在使用的过程,会不断产生碎片空间,占用存储
1.查询表的碎片空间
select ROW_FORMAT,TABLE_ROWS,DATA_LENGTH,INDEX_LENGTH,MAX_DATA_LENGTH,DATA_FREE,ENGINE from information_schema.TABLES where TABLE_SCHEMA='clcz' and TABLE_NAME='if_resp' limit 1;
可以看到有120M左右的碎片空间
下面执行命令进行优化,表越大执行时间越长,执行过程中会锁住表,切记在业务低峰操作
optimize table clcz.if_resp;
可以看到2G的数据,120M的碎片空整理用了8分钟
此时再次查看表空间使用情况
可以看到碎片空间被清理掉了,但是table_row和data_length也有变动。
我们也可以直接查看Mysql存储的磁盘空间验证下
首先查询Mysql存储位置:
show variables like '%datadir%’;
可以看到是 /var/lib/mysql/
清理前空间占用是2.4G
清理后空间占用是
但是有时候会遇到MySQL的存储空间用满,在优化的时候报错table is full
此时需要先把MySQL的存储空间先释放些,比如可以删除一些binlog,然后再做清理。