1. compact 行记录格式:
变长字段长度列表,null标志位,记录头信息,列1数据,列2数据 ……
记录头信息中包含许多信息,只列举一部分:
名称 | 大小 | 描述 |
deleted_flag | 1bit | 该行是否已被删除 |
record_type | 3bit | 记录类型,000表示普通,001表示B+树节点,010表示Infimun,011表示Supremum,1xx表示保留 |
next_record | 16bit | 页中下一条记录的相对位置 |
n_owned | 4bit | 该记录拥有的记录数 |
2. 页是InnoDB存储引擎管理数据库的最小磁盘单位。
File Header 部分字段:
名称 | 大小(字节) | 说明 |
FIL_PAGE_OFFET | 4 | 表空间中页的偏移值。如某独立表空间a.ibd的大小为1G,如果页的大小为16KB,那么总共有65536个页。FIL_PAGE_OFFET表示改页在所有页中的位置。若此表空间的id为10,那么搜索页(10, 1)就表示查找表a中的第2页 |
FIL_PAGE_PREV | 4 | 当前页的上一页,B+树的叶子节点是双向链表 |
FIL_PAGE_NEXT | 4 | 下一页 |
FIL_PAGE_LSN | 8 | 该页最后被修改的LSN(Log Sequence Number) |
FIL_PAGE_TYPE | 2 | InnoDB存储引擎页的类型 |
FIL_PAGE_TYPE的取值说明:
名称 | 解释 |
FIL_PAGE_INDEX | B+树叶节点 |
FIL_PAGE_UNDO_LOG | Undo log 页 |
FIL_PAGE_INODE | 索引节点 |