吸引企业做网站的文章内容,wordpress 主题 简介,做婚礼请柬的网站有哪些,营销管理网站制作表空间 是一个抽象的概念#xff0c;对于系统表空间来说#xff0c;对应着文件系统中一个或多个实际文件#xff1b;对于每个独立表空间来说#xff0c;对应着文件系统中一个名为 表名.ibd 的实际文件。大家可以把表空间想象成被切分为许许多多个 页 的池子#xff0c;当我…表空间 是一个抽象的概念对于系统表空间来说对应着文件系统中一个或多个实际文件对于每个独立表空间来说对应着文件系统中一个名为 表名.ibd 的实际文件。大家可以把表空间想象成被切分为许许多多个 页 的池子当我们想为某个表插入一条记录的时候就从池子中捞出一个对应的页来把数据写进去。
9.1 温习
9.1.1 页面类型
InnoDB是以页为单位管理存储空间的我们的聚簇索引也就是完整的表数据和其他的二级索引都是以 B 树的形式保存到表空间的而 B 树的节点就是数据页。我们前边说过这个数据页的类型名其实是 FIL_PAGE_INDEX 除了这种存放索引数据的页面类型之外InnoDB也为了不同的目的设计了若干种不同类型的页面为了唤醒大家的记忆我们再一次把各种常用的页面类型提出来 类型名称 十六进制 描述 FIL_PAGE_TYPE_ALLOCATED 0x0000 最新分配还没使用 FIL_PAGE_UNDO_LOG 0x0002 Undo日志页 FIL_PAGE_INODE 0x0003 段信息节点 FIL_PAGE_IBUF_FREE_LIST 0x0004 Insert Buffer空闲列表 FIL_PAGE_IBUF_BITMAP 0x0005 Insert Buffer位图 FIL_PAGE_TYPE_SYS 0x0006 系统页 FIL_PAGE_TYPE_TRX_SYS 0x0007 事务系统数据 FIL_PAGE_TYPE_FSP_HDR 0x0008 表空间头部信息 FIL_PAGE_TYPE_XDES 0x0009 扩展描述页 FIL_PAGE_TYPE_BLOB 0x000A BLOB页 FIL_PAGE_INDEX 0x45BF 索引页也就是数据页
页面类型前边都有个 FIL_PAGE 或者 FIL_PAGE_TYPE 的前缀为简便起见我们后边唠叨页面类型的时候就把这些前缀省略掉了比方说 FIL_PAGE_TYPE_ALLOCATED 类型称为 ALLOCATED 类型 FIL_PAGE_INDEX 类型称为INDEX 类型。
9.1.2 页面通用部分
数据页也就是 INDEX 类型的页由7个部分组成其中的两个部分是所有类型的页面都通用的。当然我不能寄希望于你把我说的话都记住所以在这里重新强调一遍任何类型的页面都有下边这种通用的结构 从上图中可以看出任何类型的页都会包含这两个部分
File Header 记录页面的一些通用信息
File Trailer 校验页是否完整保证从内存到磁盘刷新时内容的一致性。
对于 File Trailer 我们不再做过多强调全部忘记了的话可以到将数据页的那一章回顾一下。我们这里再强调一遍 File Header 的各个组成部分 名称 占用空间大小 描述 FIL_PAGE_SPACE_OR_CHKSUM 4 字节 页的校验和checksum值 FIL_PAGE_OFFSET 4 字节 页号 FIL_PAGE_PREV 4 字节 上一个页的页号 FIL_PAGE_NEXT 4 字节 下一个页的页号 FIL_PAGE_LSN 8 字节 页面被最后修改时对应的日志序列位置英文名是Log SequenceNumber FIL_PAGE_TYPE 2 字节 该页的类型 FIL_PAGE_FILE_FLUSH_LSN 8 字节 仅在系统表空间的一个页中定义代表文件至少被刷新到了对应的LSN值 FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID 4 字节 页属于哪个表空间
表空间中的每一个页都对应着一个页号也就是 FIL_PAGE_OFFSET 这个页号由4个字节组成也就是32个比特位所以一个表空间最多可以拥有2³²个页如果按照页的默认大小16KB来算一个表空间最多支持64TB的数据。表空间的第一个页的页号为0之后的页号分别是123...依此类推
某些类型的页可以组成链表链表中的页可以不按照物理顺序存储而是根据 FIL_PAGE_PREV 和FIL_PAGE_NEXT 来存储上一个页和下一个页的页号。需要注意的是这两个字段主要是为了 INDEX 类型的页也就是我们之前一直说的数据页建立 B 树后为每层节点建立双向链表用的一般类型的页是不使用这两个字段的。
每个页的类型由 FIL_PAGE_TYPE 表示比如像数据页的该字段的值就是 0x45BF 我们后边会介绍各种不同类型的页不同类型的页在该字段上的值是不同的。