欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

MySQL 为什么表的数据删除一般,表文件大小不变?

发布时间:2025/5/22 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 MySQL 为什么表的数据删除一般,表文件大小不变? 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

日常读书笔记

  • 前提------针对InnoDB引擎
  • InnoDB表结构
  • 为什么删除一半,表的大小不变?
    • 参数
    • 数据删除的流程
      • 数据页的复用和表的复用不一致,因为结构是B+树,有序,删除过程会造成空洞
      • 不止删除,插入也会造成空洞
      • 结论:大量增删改操作的表,都是可能存在空洞的
  • 那要怎么做才能删除干净呢?
    • 本质----去除B+树上的空洞
    • 重建表
      • 1.新建跟A结构一样的表格
      • 2.按主键递增的顺序,把数据一行一行读出来后插入到B中,并把B当成临时表(此时如果有对A插入等操作,直接对B进行操作)
      • 3.用B替代A
      • 指令—alter table A engine=InnoDB
      • 缺点—这个过程不是online的
    • Online DDL
      • 流程
    • 比较安全的操作----Github上的gh-ost
  • 拓展
    • inplace
    • inplace和Online的区别

总结

以上是生活随笔为你收集整理的MySQL 为什么表的数据删除一般,表文件大小不变?的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。