MySQL -- 空间回收

本文详细介绍了InnoDB表的物理存储结构,包括表结构和数据文件,讨论了文件空洞产生的原因,如删除、插入和更新操作。重点讲述了重建表的过程,包括逻辑过程、不同MySQL版本的重建命令以及MDL锁的影响。重建表是回收空间的有效手段,但也可能消耗大量IO和CPU资源。最后提到了Online DDL和优化工具gh-ost,以实现更高效的数据管理。
摘要由CSDN通过智能技术生成

InnoDB的物理存储

  1. InnoDB表的组成:表结构(frm)+数据(ibd)
    1. MySQL 8.0开始,允许将表结构定义(占用空间很小)放在系统数据表中
  2. 控制参数innodb_file_per_table
    1. ON:每个InnoDB表数据存储在一个以.ibd为后缀的文件中,推荐。更容易管理,DROP TABLE会直接删除这个文件
    2. OFF:InnoDB表数据存储在共享表空间,DROP TABLE,空间也是不会回收的
      SHOW VARIABLES LIKE '%innodb_file_per_table%';来查看innodb_file_per_table的参数值。

文件空洞

空洞 :经过大量增删改的表,都会存在空洞

删除

在这里插入图片描述

  1. 如果删掉R4,InnoDB只会将R4标记为删除,如果再插入300~600的记录时,可能会复用这个位置,但磁盘文件不会缩小。记录的复用,仅限于符合范围条件的数据
  2. 如果删除了一个数据页上的所有记录,那么整个数据页都可以被复用的
    1. 当整个页从B+树里摘除后,可以被复用到任何位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值