资料
表空间(tablespace)
Innodb的所有数据都存放于表空间中,一个表空间对应一个ibd文件,其中的基本元素为段(segment),这个文件会存储所有表的数据以及保证回滚的回滚段。
默认的系统表空间为ibdata1,通过参数innodb_file_per_table
配置是否开启独立表空间,若开启则每个表建立后都将新增一个ibd文件(该参数Mysql 5.6.6后默认开启)。
段(segment)
段是表空间的基本元素,为管理物理文件的逻辑结构,其空间是无限的可以有无限个区,其主要有索引段、数据段、回滚段等,其内部由区(extent)构成。
Mysql Innodb在新建一个索引时会建立两个段叶子节点(数据)段及非叶子(索引)节点段,在无索引的Innodb则存在聚集索引的叶子节点段、非叶子节点段。
区/簇(extent)
段的基本组成单位,由64个连续的页组成,每个页16k,一个区则1MB,是物理连续的。
当一个区内的数据空间不足时,将在新的区中进行存放。
页(page)
一个页默认大小16k,是Innodb磁盘管理的最小单位,在逻辑及物理上都连续。
常见的页
- 数据页(B-tree Node)。
- Undo页(Undo Log Page)。
- 系统页(System Page)。
- 事务数据页(Transaction system Page)。
- 插入缓冲位图页(Insert Buffer Bitmap)。
- 插入缓冲空闲列表页(Insert Buffer Free List)。
- 未压缩的二进制大对象页(Uncompressed BLOB Page)。
- 压缩的二进制大对象页(Compressed BLOB Page)。