MySql B+Tree
聚簇索引
非聚簇索引(二级索引)
回表查询的概念
联合索引
索引支持力度
MyISAM 和 InnoDB对比
索引的利弊
InnoDB 存储结构
数据页内部结构
位置 | 参数 | 描述 |
---|---|---|
头部信息 | FIL_PAGE_OFFSET | 页号唯一定位一个页的编号 |
头部信息 | FIL_PAGE_TYPE | 页的类型有很多 |
头部信息 | FIL_PAGE_PREV,FIL_PAGE_NEXT | 上一页地址, 下一页地址 |
头部信息 | FIL_PAGE_SPACE_OR_CHKSUM | 校验和 如一个大数据的MD5 |
尾部信息 | 这部分数据和头部信息中校验和表示校验文件 | |
body | Free Space (空闲空间) | 表示这个页还剩余多少空间 |
body | User Records | 用户记录数据, 单向链表 |
body | Infimum + Supremum(最小最大记录) | 用户记录的链表头和尾部 |
body | Page Directory(页目录) | 给用户数据做一个页目录数组 方便快速查找 |
InnoDB行格式
格式 | 参数 | 描述 |
---|---|---|
COMPACT 行格式 | NULL值列表 | 一行数据 二进制位的值为1时,代表该列的值为NULL。 0时,代表该列的值不为NULL |
COMPACT 行格式 | 记录头信息(5字节) | delete_mask,0=没有被删除,1=被删除掉了; record_type, 0=普通记录, 1=非叶子节点,2=最小记录,3=最大记录;heap_no行编号,0隐藏最小几率,1隐藏最大几率, 其他用户记录一次递增;n_owned分组最大记录;next_record =下一行记录地址 |
COMPACT 行格式 | 记录的真实数据 | 会有三个隐藏列 DB_ROW_ID、DB_TRX_ID、DB_ROLL_PTR |