mysql之delete删除记录后数据库大小不变

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql之delete删除记录后数据库大小不变相关的知识,希望对你有一定的参考价值。


当DELETE后面跟条件的时候,则就会出现这个问题

delete from table_name where 条件

删除数据后,数据表占用的空间大小不会变。

不跟条件直接delete的时候。

delete from table_name

清除了数据,同时数据表的空间也会变为0


如果已经删除了表数据的很大一部分,或者有很多变化和变长表行(VARCHAR表,VARBINARY、BLOB或文本列)进行了更改,因为删除操作后在数据文件中留下碎片所致。DELETE只是将数据标识位删除,并没有整理数据文件,当插入新数据后,会再次使用这些被置为删除标识的记录空间,可以使用OPTIMIZE TABLE来回收未使用的空间,并整理数据文件的碎片。


OPTIMIZE TABLE只对MyISAM, BDB和InnoDB表起作用。


OPTIMIZE TABLE 表名;



针对myisam引擎,使用optimize table 还有如下功能:

If the table has deleted or split rows, repair the table. [修复表]

If the index pages are not sorted, sort them. [索引未排序,会排序]

If the table’s statistics are not up to date (and the repair could not be accomplished by sorting the index), update them.[若表的统计信息不是最新的,更新它]

对myiam数据表进行批量删除后,发现空间没有回收,要通过optimize table来回收空间


本文出自 “我是一只小小鱼” 博客,请务必保留此出处http://kevinfish.blog.51cto.com/1183772/1793009

以上是关于mysql之delete删除记录后数据库大小不变的主要内容,如果未能解决你的问题,请参考以下文章

为啥在Linux上删除大容量文件后硬盘空间大小还不变

PHP MySQL Delete From 之 Delete

Mysql实战篇之可以通过删除记录来缩小表空间大小吗?--05

deletetruncate和drop的区别

SQLServer之创建AFETER DELETE触发器

delete删除记录数据库空间大小不减少问题