• mysql 删除索引 索引长度还在,数据内存 索引内存没有减少


    在我们针对数据表进行了大量删除或者删除掉某个无用的索引之后,该表占的数据内存或者索引并没有明显的变换,这是因为删除操作后在数据文件中留下碎片所致。

    查看数据与索引

    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 = 'ry-vue'
        AND TABLE_NAME = 't_day';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    优化,碎片整理

    接着执行 optimize 命令

    OPTIMIZE TABLE  your_table
    
    • 1

    返回结果,提示:Table does not support optimize, doing recreate + analyze instead
    则执行如下:

    alter table t_day engine='innodb'
    
    • 1

    原因

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

    • 对于BDB表,OPTIMIZE TABLE目前被映射到ANALYZE TABLE上。
    • 对于InnoDB表,OPTIMIZE TABLE被映射到ALTER TABLE上,这会重建表。重建操作能更新索引统计数据并释放成簇索引中的未使用的空间。

    注意:在OPTIMIZE TABLE运行过程中,MySQL会锁定表。

    对于myisam可以直接使用 optimize table table_name, 当是InnoDB引擎时,会报“Table does not support optimize, doing recreate + analyze instead”,一般情况下,由myisam转成innodb,会用alter table table.name engine='innodb’进行转换,优化也可以用这个。所以当是InnoDB引擎时我们就用alter table table.name engine='innodb’来代替optimize做优化就可以。

    验证

    等待一段时间之后,在进行上面数据内存,索引内存查询

    如图,索引已下降为80几M
    在这里插入图片描述

  • 相关阅读:
    【力扣】买卖股票(121,122,123)
    SLAM中旋转向量(旋转轴/旋转角)、旋转矩阵、四元数、李代数的相互转化(附C++ Eigen库代码实例)
    如何打一个 CV 比赛 V2.0
    Linux文件权限解析:从入门到实践
    超级玛丽-c++
    数据通信原理期末总复习
    二叉树算法
    交换机与路由器技术-04-远程管理交换机
    【Leetcode】1035. Uncrossed Lines
    全面解读视频生成模型Sora
  • 原文地址:https://blog.csdn.net/weixin_44371237/article/details/132686916