数据页格式
field | description |
---|---|
File Header |
文件头 |
Page Header |
页头 |
Infimum + Supremun Record |
|
User Records |
用户记录,即行记录 |
Free Space |
空闲空间 |
Page Directory |
页目录 |
File Trailer |
文件结尾信息 |
File Header
总共38字节。
field | size | description |
---|---|---|
FIL_PAGE_SOACE_OR_SUM | 4 | 4.0.14之前为0 4.0.14之后为当页的 checksum |
FIL_PAGE_OFFSET | 4 | 表空间中页的偏移量 |
FIL_PAGE_PREV | 4 | 上一页 |
FIL_PAGE_NEXT | 4 | 下一页 |
FIL_PAGE_LSN | 8 | 最后被修改日志序列LSN |
FIL_PAGE_TYPE | 2 | innodb 存储引擎页类型 |
FIL_PAGE_FILE_FLUSH_LSN | 8 | 仅在系统表空间中有定义 独立表空间为0 |
FIL_PAGE_ARCH_NO_OR_SPACE_ID | 4 | 4.1开始,表示该页属于哪个表空间 |
其中存储页类型如下
name | hex | description |
---|---|---|
FIL_PAGE_INDEX |
0x45BF | 树叶节点 |
FIL_PAGE_UNDO_LOG |
0x0002 | undo log 页 |
FIL_PAGE_INODE |
0x0003 | 索引节点 |
FIL_PAGE_IBUF_FREE_LIST |
0x0004 | insert buffer 空闲列表 |
FIL_PAGE_TYPE_ALLOCATED |
0x0000 | 该页为最新分配 |
FIL_PAGE_IBUF_BITMAP |
0x0005 | insert buffer 最新位图 |
FIL_PAGE_TYPE_SYS |
0x0006 | 系统页 |
FIL_PAGE_TYPE_TRX_SYS |
0x0007 | 事务系统数据 |
FIL_PAGE_TYPE_FSP_HDR |
0x0008 | FILE_SPACE_HEADER |
FIL_PAGE_TYPE_XDES |
0x0009 | 扩展描述页 |
FIL_PAGE_TYPE_BLOB |
0x000A | BLOB 页 |
Page Header
用于记录数据页状态信息,共56字节。
name | size | description |
---|---|---|
PAGE_N_DIR_SLOTS | 2 | Page Directory 中的slot 数量 |
PAGE_HEAP_TOP | 2 | 堆中第一条记录的指针 |
PAGE_N_HEAP | 2 | 堆中的记录数,两个字节表示,第十五位表示格式 |
PAGE_FREE | 2 | 可重用空间的首指针 |
PAGE_GRABAGE | 2 | 已删除记录的字节数,delete_flag=1 的记录数 |
PAGE_LAST_INSERT | 2 | 最后插入记录的位置 |
PAGE_DIRECTION | 2 | 最后插入的方向,可取值PAGE_LEFT :0x01 PAGE_RIGHT :0x02 PAGE_SAME_REC :0x03 PAGE_SAME_PAGE :0x04 PAGE_NO_DIRECTION :0x05 |
PAGE_N_DIRECTION | 2 | 一个方向连续插入的记录数量 |
PAGE_N_RECS | 2 | 该页中记录的数量 |
PAGE_MAX_TRX_ID | 8 | 修改当前最大的事务ID |
PAGE_LEVEL | 2 | 当前页在索引树中的位置,0x00 表示叶节点 |
PAGE_INDEX_ID | 8 | 索引id,表示当前页属于哪个索引 |
PAGE_DIR_SEG_LEAF | 10 | 树中数据页非叶节点所在段的segment header |
PAGE_DIR_SEG_TOP | 10 | 树数据页所在段的segment header |
Infimum和Supremum Record
- 每个数据页都有两条虚拟行记录
- 一条最小索引值,一条最大索引值,限定边界
- 页创建时创建,任何时候都不删除
User Record和Free Space
- 索引没得洗,一定是
User Space
实际存储记录Free Space
未使用
Page Directory
Page Directory
索引Solts
- 每个
Solts
包含多个页 - 每个页二叉查找单条记录
File Trailer
完整性检测
FIl_PAGE_END_LSN
前四个字节为checksum
- 后四个字节和
File Header
的FIL_PAGE_LSN
相同
开关
show variables like 'innodb_checksums';
关闭可降低开销,但是不能保证了。
算法
校验并不是直接进行比较就行了,更多是通过算法进行。
show variables like 'innodb_checksum_algorithm';
可选设置值为
innodb
crc32
none
strict_innodb
strict_crc32
strict_none
strict_crc32
是最快的,推荐使用,但是低版本不支持,需要升级。
来源:CSDN
作者:wait_for_eva
链接:https://blog.csdn.net/wait_for_eva/article/details/103593233