表构造
本文总结自《MySQL 技术底细:InnoDB 存储引擎(第 2 版)》
索引组织表
InnoDB 存储引擎中,表都是依据主键程序组织寄存的,这种存储形式的表称为索引组织表(Index organized table)
InnoDB 存储引擎表中,每张表都有主键,如果创立表时没有显式定义主键,则会依照以下规定创立:
- 如果表中有非空惟一索引(Unique Not Null),咋设该列为主键
- 如果没有,则会主动创立 6 字节大小的指针
- 如果有多个非空惟一索引,则会抉择定义索引程序时的第一个
InnoDB 逻辑存储构造
表空间
表空间能够看做 InnoDB 存储引擎最高层,所有数据都寄存在表空间中,落到磁盘上即 ibdata 文件,能够通过 innodb_file_per_table
参数设置每张表独自放到一个表空间内
段
表空间由各种段组成,如:数据段、索引段、回滚段等
因为 InnoDB 存储引擎表是索引组织的,因而 数据段 即为 B+ 树的叶子节点,索引段 为 B+ 树的非索引节点
区
区是由间断的页组成,任何状况下大小都为 1MB,默认状况下 InnoDB 存储引擎页大小为 16KB,一个区由 64 个间断的页组成
页
页是 InnoDB 磁盘治理的最小单位,默认状况下 InnoDB 存储引擎页大小为 16KB
行
用于寄存每一行数据