表结构
本文总结自《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
行
用于存放每一行数据
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。