Mysql-页及行格式
2021-07-28 12:21:18 0 举报
AI智能生成
Mysql-页及行格式
作者其他创作
大纲/内容
存储引擎
种类
InnoDB
记录结构
行格式
COMPACT<br>
记录的额外信息
变长字段长度列表
NULL值列表
记录头信息<br>
预留位1
1bit
没有使用
预留位2
1bit
没有使用
delete_mask
1bit
标记该记录是否被删除<br>
min_rec_mask
1bit
B+树的每层非叶子节点中的最小记录都会添加该标记<br>
n_owned
4bit
表示当前记录拥有的记录数<br>
heap_no
13bit
表示当前记录在记录堆的位置信息<br>
record_type
3bit
表示当前记录的类型
0-->普通记录
1-->B+数非叶子节点
2-->最小记录
3-->最大记录
next_record
16bit
表示下一条记录的相对位置
记录的真实数据
REDUNDANT<br>
记录的额外信息
字段长度偏移列表
字段头信息
记录的真实数据
DYNAMIC<br>
COMPRESSED<br>
数据页
属性
大小
16KB
种类
存放表空间头部的页
存放Insert Buffer信息的页
存放INODE信息的页
存放undo日志信息的页
索引页<br>(存放记录的页)
结构
文件头部(File Header)
占用空间大小
38字节
描述
页的一些通用信息
结构
FIL_PAGE_SPACE_OR_CHKSUM
占用空间
4字节
描述
FIL_PAGE_OFFSET
占用空间
4字节
描述
页号
FIL_PAGE_PREV
占用空间
4字节
描述
上一个页的页号
FIL_PAGE_NEXT
占用空间
4字节
描述
下一个页的页号
FIL_PAGE_LSN
占用空间
8字节
描述
页面被最后修改时对应的日志序列位置(英文名是:Log Sequence Number)
FIL_PAGE_TYPE
占用空间
2字节
描述
该页的类型
类型
FIL_PAGE_TYPE_ALLOCATED
值(16进制)
0x0000
描述
最新分配,还没使用
FIL_PAGE_UNDO_LOG
值(16进制)
0x0002
描述
Undo日志页
FIL_PAGE_INODE
值(16进制)
0x0003
描述
段信息节点
FIL_PAGE_IBUF_FREE_LIST
值(16进制)
0x0004
描述
Insert Buffer空闲列表
FIL_PAGE_IBUF_BITMAP
值(16进制)
0x0005
描述
Insert Buffer位图
FIL_PAGE_TYPE_SYS
值(16进制)
0x0006
描述
系统页
FIL_PAGE_TYPE_TRX_SYS
值(16进制)
0x0007
描述
事务系统数据
FIL_PAGE_TYPE_FSP_HDR
值(16进制)
0x0008
描述
表空间头部信息
FIL_PAGE_TYPE_XDES
值(16进制)
0x0009
描述
扩展描述页
FIL_PAGE_TYPE_BLOB
值(16进制)
0x000A
描述
溢出页
FIL_PAGE_INDEX
值(16进制)
0x45BF
描述
索引页,也就是我们所说的数据页
FIL_PAGE_FILE_FLUSH_LSN
占用空间
8字节
描述
仅在系统表空间的一个页中定义,代表文件至少被刷新到了对应的LSN值
FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID
占用空间
4字节
描述
页属于哪个表空间
页面头部(Page Header)
占用空间大小
56字节
描述
数据页专有的一些信息
结构
PAGE_N_DIR_SLOTS
占用空间
2字节
描述
在页目录中的槽数量
PAGE_HEAP_TOP
占用空间
2字节
描述
还未使用的空间最小地址,也就是说从该地址之后就是Free Space
PAGE_N_HEAP
占用空间
2字节
描述
本页中的记录的数量(包括最小和最大记录以及标记为删除的记录)
PAGE_FREE
占用空间
2字节
描述
第一个已经标记为删除的记录地址(各个已删除的记录通过next_record也会组成一个单链表,这个单链表中的记录可以被重新利用)
PAGE_GARBAGE
占用空间
2字节
描述
已删除记录占用的字节数
PAGE_LAST_INSERT
占用空间
2字节
描述
最后插入记录的位置
PAGE_DIRECTION
占用空间
2字节
描述
记录插入的方向
PAGE_N_DIRECTION
占用空间
2字节
描述
一个方向连续插入的记录数量
PAGE_N_RECS
占用空间
2字节
描述
该页中记录的数量(不包括最小和最大记录以及被标记为删除的记录)
PAGE_MAX_TRX_ID
占用空间
8字节
描述
修改当前页的最大事务ID,该值仅在二级索引中定义
PAGE_LEVEL
占用空间
2字节
描述
当前页在B+树中所处的层级
PAGE_INDEX_ID
占用空间
8字节
描述
索引ID,表示当前页属于哪个索引
PAGE_BTR_SEG_LEAF
占用空间
10字节
描述
B+树叶子段的头部信息,仅在B+树的Root页定义
PAGE_BTR_SEG_TOP
占用空间
10字节
描述
B+树非叶子段的头部信息,仅在B+树的Root页定义
最小记录和最大记录(Infimum+Supremum)
占用空间大小
26字节
描述
两个虚拟的行记录
用户记录(User Records)
占用空间大小
不确定大小
描述
实际存储的行记录内容
空闲空间(Free Space)
占用空间大小
不确定大小
描述
页中尚未使用的空间
页目录(Page Directory)
占用空间大小
不确定大小
描述
页中的某些记录的相对位置
结构
槽 slot
文件尾部(File Trailer)
占用空间大小
8字节
描述
校验页是否完整
结构
前4字节
页的校验和
后4字节
页面被最后修改时对应的日志序列位置(LSN)
……
MyISAM
Memory
查询支持
SHOW ENGINES;
创建表时指定
CREATE TABLE 表名(<br>建表语句<br>) ENGINE = 存储引擎名称;
CREATE TABLE engin_demo_table(<br>i int<br>) ENGINE = MyISAM;
修改表引擎
ALERT TABLE 表名 ENGINE = 存储引擎名称;
ALERT TABLE engine_demo_table ENGINE=InnoDB;
收藏
收藏
0 条评论
下一页