说说InnoDB 数据页结构?
1 个回答
做好自己,至于别人,分交情,看心情。小王子-B965InnoDB 数据页是 InnoDB 存储引擎中数据存储的最小单位,默认大小为 16KB。一个数据页被划分为七个部分,分别用于存储元数据、用户数据和空间管理等。以下是各个部分的详细介绍: ### 1. **File Header(文件头部,38字节)** - **作用**:存储页的一些通用信息,用于标识和管理数据页。 - **内容**: - 页类型(Page Type) - 页编号(Page Number) - 所属表空间 ID(Space ID) - 该页的校验和(Checksum)等信息。 ### 2. **Page Header(页面头部,56字节)** - **作用**:存储与页内记录管理相关的信息,辅助对页内记录的操作。 - **内容**: - 记录数(Number of Records) - 空闲空间的起始位置(Free Space Start) - 页的级别(Level),用于 B+ 树结构。 - 前一页和后一页的指针,帮助页与页之间形成链表结构。 ### 3. **Infimum 和 Supremum(最小和最大记录,26字节)** - **作用**:两个虚拟的伪记录,代表该页的最小和最大记录,用于维护页的记录顺序。 - **Infimum**:表示逻辑上最小的记录,始终位于页中的第一条位置。 - **Supremum**:表示逻辑上最大的记录,位于页中的最后一条。 ### 4. **User Records(用户记录,大小不固定)** - **作用**:存储用户插入的真实数据,即表中的每一行数据。 - **特点**: - 按照主键顺序存储(对于索引页,按照索引顺序存储)。 - 每条记录都有头信息,包含指向前后记录的指针。 ### 5. **Free Space(空闲空间,大小不固定)** - **作用**:存储未使用的页空间,等待插入新记录时使用。 - **特点**: - 页内插入和删除操作会动态调整空闲空间。 - 当空间不足时,需要进行页拆分或合并操作。 ### 6. **Page Directory(页目录,大小不固定)** - **作用**:存储页内部分记录的偏移量,用于快速查找记录。 - **特点**: - 页目录中保存的是用户记录的位置信息,通过该目录可以加速查找记录。 - 页目录中的偏移量以槽(Slot)的形式存在,支持二分查找。 ### 7. **File Trailer(文件尾部,8字节)** - **作用**:用于验证页的完整性,确保数据传输或写入过程中没有损坏。 - **内容**: - 页的校验和信息(Checksum),与 File Header 中的信息配合使用。 ### 总结: 1. **File Header** 和 **Page Header** 用于存储页的元数据信息。 2. **Infimum 和 Supremum** 是两个虚拟记录,帮助维持记录的顺序。 3. **User Records** 是实际的用户数据,按特定顺序存储。 4. **Free Space** 提供了插入新数据的空间。 5. **Page Directory** 是记录的目录,用于加快查找。 6. **File Trailer** 通过校验和确保数据页的完整性。 这七个部分共同构成了 InnoDB 数据页的结构,保证了数据存储的高效性和一致性。编辑于 2024-11-29 03:34 •IP属地 美国举报评论收藏
公众号进入网站体验更佳

