mysql_innodb_index_page
2021-07-16 16:50:30 3 举报
mysql_innodb_index_page 图解
作者其他创作
大纲/内容
(数据页)Page Header
B+树非叶子段(仅在root页)
...
File Header
13Bytes*2
PAGE_DIRECTION (2B)
offset(2Bytes)
FIL_PAGE_TYPE_BLOB (0x000A)
next_record(16bits)(有序)从本条记录真正数据开始,向后数 next_record 个字节,就是下一条记录的真正数据。
InnoDB 数据页(16KB)
desc
FIL_PAGE_TYPE (2bytes)
记录头信息 (5bytes)
Space ID of the INODE Entry (4B)
非叶子节点段
Records
0x0070
locate
row_id( 6bytes 非必须)
FIL_PAGE_LSN (8bytes)
record_type(3bits)
PAGE_LEVEL(2B)
Infimum + Supremum (26 bytes)
PAGE_CHKSUM (4bytes)
FIL_PAGE_INDEX (0x45BF)
文件系统
空闲空间开始处
变长字段长度列表
supremum
File Header (38 bytes)
roll_pointer (7 bytes)
PAGE_FREE (2B)
PAGE_N_DIRECTION (2)
0:用户记录1:B+树非叶子节点记录2:最小记录3:最大记录
客户端
MyISAM
columns
按照 primary key 从小到大排序
PAGE_BTR_SEG_LEAF(10B)
查询缓存
PAGE_BTR_SEG_TOP(10B)
INode Entry(192Bytes)
Memory
offset=99
查询优化
FIL_PAGE_OFFSET (4bytes)(页号)
Page Directory
叶子节点段
FIL_PAGE_PREV (4bytes)
B+树层级,叶子节点视为第 0 层
InnoDB
Byte Offset of the INODE Entry (2B)
infimum
File Trailer (8 bytes)
版本链(MVCC)
FIL_PAGE_TYPE_SYS (0x0006)
FIL_PAGE_LSN 后四个字节
0x0063
primary key + page no
NULL 值列表
User Records
FIL_PAGE_SPACE_OR_CHKSUM (4bytes)
语法解析
PAGE_INDEX_ID(8B)
1.用户记录
主键生成策略:1. 用户自定义的主键2. 没有自定义主键,取第一个 not null 的 unique 为主键。3. 1 和 2 都没有,采用系统提供的 row_id
space_id(4Bytes)
PAGE_MAX_TRX_ID(8B)
Free Space
PAGE_N_HEAP (2B)
PAGE_LAST_INSERT (2B)
Compact 行格式
FIL_PAGE_TYPE_XDES (0x0009)
每次更新前都会先写 undo log
页面类型
FIL_PAGE_IBUF_BITMAP (0x0005)
is_insert(1bit)
PAGE_N_DIR_SLOTS (2B)
delete_mask(1bit)
heap_no(13bits)(记录编号)
Page Header (56 bytes)
FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID(4bytes)
min_rec_mask(1bit)
n_owned(4bits)(分组)
记录真正数据
FIL_PAGE_UNDO_LOG (0x0002)
Page Number of the INODE Entry (4B)
PAGE_HEAP_TOP (2B)
r_segid(7bits)
PAGE_GARBAGE (2B)
存储引擎 API
FIL_PAGE_TYPE_FSP_HDR (0x0008)
2.目录项
FIL_PAGE_TYPE_TRX_SYS (0x0007)
record_type =1
INode Entry(192Bytes)(区+页)
transtation_id (6bytes)
slot
LSN (4bytes)
B+树叶子段(仅在root页)
MySQL Server
FIL_PAGE_TYPE_ALLOCATED (0x0000)
表空间 id
FIL_PAGE_IBUF_FREE_LIST (0x0004)
链表 + page directory
FIL_PAGE_INODE (0x0003)
记录额外信息
PAGE_N_RECS (2B)
FIL_PAGE_NEXT (4bytes)
处理连接
定位一个 undo log
offset=112
FIL_PAGE_FILE_FLUSH_LSN (8bytes)
ReadView 借助 trx_id
0 条评论
下一页