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

 

 

 

 

posted @ 2021-11-23 09:00  方达达  阅读(454)  评论(0编辑  收藏  举报