生产系统中有些表使用delete删除了一些行后,发现空间并未释放
产生原因:类比 Oracle的高水位线产生原理
解决办法:
方法1:
执行 OPTIMIZE TABLE 表名;
注意:1.OPTIMIZE TABLE只对MyISAM, BDB和InnoDB表起作用;
2.OPTIMIZE TABLE会产生锁,推荐在业务低峰时执行;
3.对于DDL频繁的表,定期执行OPTIMIZE TABLE
方法2:
写一SQL,创建新表,删除旧表,新表重命名;
old_tables create new_table;
truncate table old_tables;rename new_tables to old_tables.