使用delete删除数据 , 是我们常用的用法 , 但是这样并没有真正的把数据删除掉 , mysql只是标志了一下删除
测试如下, audit_log表删除之前的数据文件的大小
[root@dev-3-144 shihan1]# ll /data2/mysql3960/sinanet/|grep audit_log
-rw-rw---- 1 mysql mysql 21563 Nov 19 14:13 audit_log.frm
-rw-rw---- 1 mysql mysql 163840 Nov 19 14:14 audit_log.ibd
使用delete删除部分数据之后
delete from audit_log where ent_id=23684;
大小没有变化
使用整理数据碎片 optimize table audit_log;
执行之后的大小
[root@dev-3-144 shihan1]# ll /data2/mysql3960/sinanet/|grep audit_log
-rw-rw---- 1 mysql mysql 21563 Nov 19 16:18 audit_log.frm
-rw-rw---- 1 mysql mysql 147456 Nov 19 16:18 audit_log.ibd