mysql 在删除大量数据或者索引之后 表的数据内存和索引内存并没有明显的减少 为什么
“你知道我是干大事的男人吗?” “什么大事?” “你就是我的大事。”
在我们针对数据表进行了大量删除或者删除掉某个无用的索引之后,该表占的数据内存或者索引并没有明显的变换,这是因为删除操作后在数据文件中留下碎片所致。
那么要怎么样进行优化了,
关键字 OPTIMIZE TABLE your_table
举例子:
SELECT
TABLE_NAME,
concat( TRUNCATE ( data_length / 1024 / 1024, 2 ), ' MB' ) AS data_size,
concat( TRUNCATE ( index_length / 1024 / 1024, 2 ), ' MB' ) AS index_size
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = 'fangdasheng'
AND TABLE_NAME = 'sku_sku';
结果:
然后删除掉一个多余的索引,
接着执行 optimize 命令
OPTIMIZE table `sku_sku`;
等待一段时间之后,在进行上面数据内存,索引内存查询
结果显示:
索引内存明显减少了,但在执行 optimize 命令的时候,要注意锁表问题
注意:在执行 碎片整理的时候
会出现 note 提示
先检查数据库是否是 MyISAM Innodb 引擎类型的数据,
没有减少可以查看这篇博客记录
https://www.cnblogs.com/fangdada/p/15423304.html