InnoDB 数据页详解
摘要
InnoDB层的文件除日志文件外,都具有较为统一的物理结构。所有物理文件由页(page 或 block)构成,在未被压缩情况下,一个页的大小为UNIV_PAGE_SIZE(16384,16K)。不同用途的页具有相同格式的文件头和文件尾,其中记录了页面校验值、页面编号、表空间编号、LSN等通用信息。根据不同的应用场景和功能可以将页面分为多种类型,比如:每隔一定数量的页面后会使用extern描述页来记录每页空闲与否;Inode页面用于存储segment信息,segment是表空间管理的逻辑单位,每个索引占用2个segment,分别用于管理叶子节点和非叶子节点;索引页用于存储索引和用户记录;Blob页面用于记录溢出行的内容等等。InnoDB文件的结构可以详见《浅析InnoDB文件结构》。
本文主要讨论用户记录存储相关的数据页面(索引页和外部存储页)的物理结构以及组织方式。InnoDB用B+树的方式管理用户记录数据,每个索引对应一个B+树。B+树是通过索引页构建的,用户记录的数据存储在聚簇索引的叶子结点中。如果有变长字段(如text、blob、varchar)的长度过长,则可能会将该字段的全部数据或部分数据存储到外部存储页(blob页面)。
欢迎在评论区写下你对这篇文章的看法。