Mysql-页及行格式
2021-07-28 12:21:18 0 举报
AI智能生成
Mysql-页及行格式
作者其他创作
大纲/内容
存储引擎
种类
InnoDB
记录结构
行格式
COMPACT
记录的额外信息
变长字段长度列表
NULL值列表
记录头信息
预留位1
1bit
没有使用
预留位2
1bit
没有使用
delete_mask
1bit
标记该记录是否被删除
min_rec_mask
1bit
B+树的每层非叶子节点中的最小记录都会添加该标记
n_owned
4bit
表示当前记录拥有的记录数
heap_no
13bit
表示当前记录在记录堆的位置信息
record_type
3bit
表示当前记录的类型
0-->普通记录
1-->B+数非叶子节点
2-->最小记录
3-->最大记录
next_record
16bit
表示下一条记录的相对位置
记录的真实数据
REDUNDANT
记录的额外信息
字段长度偏移列表
字段头信息
记录的真实数据
DYNAMIC
COMPRESSED
数据页
属性
大小
16KB
种类
存放表空间头部的页
存放Insert Buffer信息的页
存放INODE信息的页
存放undo日志信息的页
索引页
(存放记录的页)
(存放记录的页)
结构
文件头部(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 表名(
建表语句
) ENGINE = 存储引擎名称;
建表语句
) ENGINE = 存储引擎名称;
CREATE TABLE engin_demo_table(
i int
) ENGINE = MyISAM;
i int
) ENGINE = MyISAM;
修改表引擎
ALERT TABLE 表名 ENGINE = 存储引擎名称;
ALERT TABLE engine_demo_table ENGINE=InnoDB;
收藏
收藏
0 条评论
下一页