ITEEDU

15.2.14 .3.文件空间管理

你在配置文件中定义的数据文件形成InnoDB的表空间。文件被简单地连起来以形成表空间。没有条纹在使用。当前你不能定义你的表被分配到表空间中的位置。但是,在一个新创建的表中间中,InnoDB 从第一个数据文件开始分配空间。

表空间包含数据库页,默认大小是16KB。这些页被分组成64个连续页的范围。表空间内的文件在InnoDB中被称为片断。术语“rollback segment”有一些混淆,因为它确切地包含许多表空间片断。

在InnoDB中,每个索引分配两个片断。一个是给B树的非树叶节点的,另一个是给树叶节点的。在这里,理想的是为包含数据的树叶节点达到更好的有序性。

当一个片断在表空间内长大,InnoDB单独地分配最先的32页给它。此后InnoDB开始分配整个范围给该片断。InnoDB可以一次给一个大片断添加多达4个范围以确保数据良好的连续性。

在表空间中的一些页包含其它页的位图,因此在一个InnoDB表空间中的一些范围不能被整个地分配给片断,只能作为单个页被分配。

当你发出SHOW TABLE STATUS询问表空间里可用的自由空间之时,InnoDB报告在表空间中完全自由的范围。InnoDB总是为扫除和其它内部目的保留一些范围,这些保留的范围不包括在自由空间里。

当你从一个表中删除数据之时,InnoDB联系相应的B树索引。是否释放单独页或是范围到表空间取决删除的方式,因此被释放的空间变成对其它用户可用,但是记住,已删除的行仅在该行不再被事务 回滚或持续读所需要之后的一个(自动)净化操作中被物理删除。