当前位置:
首页 >
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 为什么表的数据删除一般,表文件大小不变?的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: MySQL 为什么我的MySQL会“抖一
- 下一篇: MySQL count(*)这么慢,我该