-
概要
前面已经说过了行记录结构。我们知道在mysql的物理存储中,所有的数据都是存储在一个独立或者共享的表空间(也就是一个ibd文件)中的,而在这个文件中有一些逻辑上的划分;表空间->段->区->页->行记录,所以这次我们需要讲的就是在页中是个怎样的结构,然后怎么管理一个行记录集的。 -
页结构图
文件头,页头,文件结尾信息的大小是固定的分别为38,56,8个字节,这些主要用于记录页的基本信息,比如这个页是什么类型的页,这个页在b+tree这颗树中处在的位置是非叶子节点页还是叶子节点页,我们可以利用这些信息可以来还原这颗b+tree树;剩下的都是用来控制行记录使用的,行记录的变化会影响到空闲空间的多少和页目录,这些值的空间大小是动态的的。 -
File Header
文件头用来记录页的一些头信息,由八个部分组成,共占用38字节
a. 1-4字节 FILE_PAGE_SPACE_OR_CHKSUM 表示处在b+tree的层数
b. 5-8字节 FILE_PAGE_OFFSET 表示表空间中页的偏移量,表示在所有页中的位置,相对表空 间而言,不是相对某种类型的页而言
c.9-12字节 FIL_PAGE_PREV 表示当前页的上一页
d.13-16字节 FIL_PAGE_NEXT表示当前页的下一页
e.17-24字节 FIL_PAGE_LSN 表示该页最后被修改的日志序列位置(log sequence number)
f. 25-26字节 FIL_PAGE_TYPE 表示该页的类型,其中给我们比较关心的数据页类型的,0x45BF
g.27-34字节 FILE-PAGE_FILE_FLUSH_LSN 对于独立表空间这个值为0
h.35-38字节 FIL_PAGE_ARCH_LOG_SPZCE_ID 该页属于哪个表空间总结:文件头是描述这个页在表空间中的状态信息,比如在表空间中这个页的偏移量,这个页属于所有页类型中的哪种页之类的信息。
-
Page Header
页头用来记录数据页中的状态信息,共14部分组成,共占56字节
(十一)mysql常用命令之InnoDB数据页结构
猜你喜欢
转载自blog.csdn.net/weixin_38312719/article/details/89398195
今日推荐
周排行