mysql数据表清空之后,mysql储存目录下的文件还是很大

在使用mysql的时候有时候,可能会发现尽管一张表删除了许多数据,但是这张表表的数据文件和索引文件却奇怪的没有变小。这是因为mysql在删除数据(特别是有Text和BLOB)的时候,会留下许多的数据空洞,这些空洞会占据原来数据的空间,所以文件的大小没有改变。这些空洞在以后插入数据的时候可能会被再度利用起来,当然也有可能一直存在。这种空洞不仅额外增加了存储代价,同时也因为数据碎片化降低了表的扫描效率。

整理这些空洞,mysql 提供了整理命令,进入到mysql

msyql -uroot -p

执行: ​​OPTIMIZE TABLE_NAME;​

如果这些数据不怎么重要,可以清空该表,把所有数据全部清除,这个慎用。

执行:​​TRUNCATE TABLE​

清理从原来的 5 g(其实数据表中无数据) 变成 11m

数据库清空后还是.idb文件占据很大的内存_数据库

数据库清空后还是.idb文件占据很大的内存_java_02

如何查看表中空洞数据的大小?

show table status from 你的数据库 like "你的数据表";

这边的data_free 为空洞数据。

数据库清空后还是.idb文件占据很大的内存_插入数据_03