InnoDB的物理存储
- InnoDB表的组成:表结构(frm)+数据(ibd)
- MySQL 8.0开始,允许将表结构定义(占用空间很小)放在系统数据表中
- 控制参数innodb_file_per_table
- ON:每个InnoDB表数据存储在一个以.ibd为后缀的文件中,推荐。更容易管理,DROP TABLE会直接删除这个文件
- OFF:InnoDB表数据存储在共享表空间,DROP TABLE,空间也是不会回收的
SHOW VARIABLES LIKE '%innodb_file_per_table%';
来查看innodb_file_per_table的参数值。
文件空洞
空洞 :经过大量增删改的表,都会存在空洞
删除
- 如果删掉R4,InnoDB只会将R4标记为删除,如果再插入300~600的记录时,可能会复用这个位置,但磁盘文件不会缩小。记录的复用,仅限于符合范围条件的数据
- 如果删除了一个数据页上的所有记录,那么整个数据页都可以被复用的
- 当整个页从B+树里摘除后,可以被复用到任何位置