Mysql是怎样运行的
2025-12-23 20:25:45 0 举报
Mysql是怎样运行的思维图
作者其他创作
大纲/内容
roll_pointer
⻚号
头部信息
File Trailer(⽤于检验⻚是否完整的部分)
min_rec_flag
槽位2
trx_id
⻚⾯被最后修改时对应的⽇志序列位置(英⽂名是:Log Sequence Number)
还未使⽤的空间最⼩地址,也就是说从该地址之后就是Free Space
Free Space(⻚中尚未使⽤的部分,⼤⼩不确定)
NULL值列表
c2列的值
Infimum + Supremum(两个虚拟的伪记录,分别表示⻚中的最⼩和最⼤记录)
0
PAGE_LEVEL
⻚属于哪个表空间
n_owned
第⼀个已经标记为删除的记录地址(各个已删除的记录通过next_record也会组成⼀个单链表,这个单链表中的记录可以被重新利⽤
FIL_PAGE_TYPE
FIL_PAGE_FILE_FLUSH_LSN
row_id
预留位1
PAGE_LAST_INSERT
2
next_record
3
heap_no
槽位数量
索引ID,表示当前⻚属于哪个索引
record_type
修改当前⻚的最⼤事务ID,该值仅在⼆级索引中定义
c1列的值
PAGE_FREE
7
该⻚的类型
下⼀个⻚的⻚号
当前⻚在B+树中所处的层级
PAGE_BTR_SEG_TOP
PAGE_DIRECTION
名称
描述
事务ID
回滚指针
4
类型名称
⼗六进制
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
索引⻚,也就是我们所说的数据⻚
deleted_flag
8
最后插⼊记录的位置
最小记录固定单词
FIL_PAGE_LSN
该⻚中记录的数量(不包括最⼩和最⼤记录以及被标记为删除的记录)
PAGE_N_DIRECTION
FIL_PAGE_SPACE_OR_CHKSUM
B+树⾮叶⼦段的头部信息,仅在B+树的Root⻚定义
PAGE_HEAP_TOP
LSN(首位相同)
变长字段长度列表
1
预留位2
FIL_PAGE_OFFSET
最大记录固定单词
PAGE_GARBAGE
上⼀个⻚的⻚号
PAGE_BTR_SEG_LEAF
PAGE_N_DIR_SLOTS
Page Directory(⻚中的某些记录相对位置,也就是各个槽在⻚⾯中的地址偏移量,⼤⼩不固定,插⼊的记录越多,这个部分占⽤的空间越多)
FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID
槽位0
B+树叶⼦段的头部信息,仅在B+树的Root⻚定义
6
每个记录的头信息中都有⼀个next_record属性,从⽽使⻚中的所有记录串联成⼀个单链表
FIL_PAGE_PREV
PAGE_N_HEAP
Infimum
记录插⼊的⽅向
PAGE_INDEX_ID
本⻚中的记录的数量(包括最⼩和最⼤记录以及标记为删除的记录)
PAGE_MAX_TRX_ID
⼀个⽅向连续插⼊的记录数量
校验和(首位相同)
5
User Records(真实存储我们插⼊的记录的部分,⼤⼩不固定)
⼤⼩(单位:bit)
没有使⽤
delete_mask
标记该记录是否被删除
min_rec_mask
B+树的每层⾮叶⼦节点中的最⼩记录都会添加该标记
表示当前记录拥有的记录数
13
表示当前记录在⻚⾯堆的位置信息
n_field
10
表示记录中列的数量
1byte_offs_flag
标记字段⻓度偏移列表中每个列对应的偏移量是使⽤1字节还是2字节表示的
16
表示下⼀条记录的相对位置
表示当前记录的类型,0表示普通记录,1表示B+树⾮叶⼦节点记录,2表示最⼩记录,3表示最⼤记录
空余空间
File Header(⻚的⼀些通⽤信息)
Page Header(数据⻚专有的⼀些信息)
PAGE_N_RECS
Infimum
FIL_PAGE_NEXT
已删除记录占⽤的字节数
⻚的校验和(checksum值)
仅在系统表空间的⼀个⻚中定义,代表⽂件⾄少被刷新到了对应的LSN值
最小记录为一组最大记录4-8条一组其余记录1-8条一组槽(记录组内最大记录位置漂移量)
9
16KB数据页
槽位1
InnoDB会为把⻚中的记录划分为若⼲个组,每个组的最后⼀个记录的地址偏移量作为⼀个槽,存放在Page Directory中,所以在⼀个⻚中根据主键查找记录是⾮常快的,分为两步:1. 通过⼆分法确定该记录所在的槽。2. 通过记录的next_record属性遍历该槽所在的组中的各个记录。
收藏
收藏
0 条评论
下一页