MySQL删除数据表空间不变原因

探讨MySQL InnoDB引擎下,innodb_file_per_table参数如何影响表数据存储,详解数据删除流程与表重建机制,包括Online与inplace操作的区别。
摘要由CSDN通过智能技术生成


作为一名资深的CV 战士,我们可能很少去关注 MySQL的数据文件存储在哪里。当我们执行一批删除操作的时候,也不会去观察数据库文件的大小到底有没有变化。下面我们一起来看一下 MySQL 数据存储相关的原理。

在MySQL 8.0 之前,表结构定义是存储在 .frm 为后缀的文件里,如下图所示。因为表结构定义占用空间比较小,下面主要介绍一下 表数据的存储相关的东西。
在这里插入图片描述

innodb_file_per_table

表数据可以存储在共享表空间里(ibdata1、ibdata2…),也可以单独存储,这个是有innodb_file_per_table 参数决定的。innodb_file_per_table 设置为 OFF 时,表示表的数据存储在 共享表空间,也就是和数据字典存放在一起;当设置为ON 时,每个 InnoDB 的表数据都会存储在一个 .ibd 的文件中。(从 MySQL 5.6.6 开始默认为 ON)

innodb_file_per_table 建议设置为 ON,也就是每个表数据单独存储。当我们使用 drop 删除表时,就可以回收磁盘空间了。否则磁盘空间还不一定会被回收。

数据删除流程

在这里插入图片描述
上面是主键索引树的结构ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值