InnoDB的数据存储结构 - 图1

  • Tablespace(表空间)
    InnoDB把数据保存在表空间内,表空间可以看作是InnoDB存储引擎逻辑结构的最高层。本质上是一个由一个或多个磁盘文件组成的虚拟文件系统,存储表和索引,还保存了回滚段、双写缓冲区等
  • Segment(段)
    表空间的主要组织单位,常见的段有数据段、索引段、回滚段等,是构成索引、表、回滚段的基本元素。 创建一个索引(B+树)时会同时创建两个段,分别是内节点段和叶子段,内节点段用来管理(存储)B+树非叶子(页面)的数据,叶子段用来管理(存储)B+树叶子节点的数据。
  • extent(区/簇)
    簇是构成段的基本元素,一个段由若干个簇构成。 簇是由64个连续的页组成的,每个页大小为16KB,即每个簇的大小为1MB。
  • Page(页)
    页是InnoDB存储引擎磁盘管理的最小单位,每个页默认16KB。常见的页类型有数据页(B-tree Node)、Undo页(Undo Log Page)、系统页(System Page)、事务数据页(Transaction system Page)等。
  • Row(行)
    数据的存放形式,最多允许存放16KB/2-200,即7992行记录。

上面随便看看,下面主要看页的存储结构

页结构

InnoDB的数据存储结构 - 图2

在File Header中记录了上下页的指针。在UserRecords中记录了行记录,链表结构。
那么只看页和数据, 是一个双向链表+内部链表的结构。
InnoDB的数据存储结构 - 图3