MySQL 表结构

表结构

本文总结自《MySQL技术内幕:InnoDB存储引擎(第2版)》

索引组织表

InnoDB 存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表(Index organized table)

InnoDB 存储引擎表中,每张表都有主键,如果创建表时没有显式定义主键,则会按照以下规则创建:

  1. 如果表中有非空唯一索引(Unique Not Null),咋设该列为主键
  2. 如果没有,则会自动创建 6 字节大小的指针
  3. 如果有多个非空唯一索引,则会选择定义索引顺序时的第一个

InnoDB 逻辑存储结构

MySQL 表结构_第1张图片

表空间

表空间可以看做 InnoDB 存储引擎最高层,所有数据都存放在表空间中,落到磁盘上即 ibdata 文件,可以通过 innodb_file_per_table 参数设置每张表单独放到一个表空间内

表空间由各种段组成,如:数据段、索引段、回滚段等

由于 InnoDB 存储引擎表是索引组织的,因此数据段即为 B+ 树的叶子节点,索引段为 B+ 树的非索引节点

区是由连续的页组成,任何情况下大小都为 1MB,默认情况下 InnoDB 存储引擎页大小为 16KB,一个区由 64 个连续的页组成

页是 InnoDB 磁盘管理的最小单位,默认情况下 InnoDB 存储引擎页大小为 16KB

用于存放每一行数据

你可能感兴趣的:(mysql)