前言

我们在使用DELETE删除数据时,发现表文件大小没有变化:
image.png
InnoDB直接将这些记录标记为删除,称为可复用的位置,之后插入数据会复用该位置,所以磁盘空间不会减少。

解决方案

执行OPTIMIZE TABLE回收空间命令,该命令只对MyISAMInnoDB表起作用:

  1. OPTIMIZE TABLE 表名;

也可以通过ALTER TABLE命令重建表:

  1. ALTER TABLE 表名 ENGINE=INNODB;

执行上述命令后表文件占用磁盘空间变小:
image.png

总结

delete 删除数据时,其实对应的数据行并不是真正的删除,仅仅是将其标记成可复用的状态,所以表空间不会变小。�