Page-页
描述
- 为了避免一条一条读取磁盘数据,InnoDB采取页的方式,作为磁盘和内存之间交互的基本单位,从而提高mysql的性能。
- 一个页的大小一般是16KB。
- InnoDB为了不同的目的而设计了多种不同类型的页,比如:存放表空间头部信息的页、存放undo日志信息的页等等。我们把存放表中数据记录的页,称为索引页or数据页。
InnoDB数据页结构
往数据页中存储数据(也叫“记录”)
记录结构
delete-flag:0是未删除,1是已删除
min-rec-flag:在B+树当中只有非叶子节点的时候才会被标记
n_owned:只有在组里面排最后一条记录的时候,这条记录的n_owned才会被维护,n_owned是组的数量。
heap_no:页面堆的相对位置
record_type:记录类型
- 0:普通类型
- 1:B+树当中非叶子节点的目录项记录
- 2:数据页当中的最小记录
- 3:数据页当中的最大记录
next-record:指向下一条记录
删除记录操作对next_record的影响
Innodb的删除记录操作,
- n_owned在会减1,反之增加一条记录会加1
- 被删除的记录delele_flag会标记为1
- heap_no在初始化页的时候就标记好了不会进行改变
- min_rec_flag这里都是叶子节点所有不会被维护都是0
- 删除一条记录之后该记录的头节点会指向该记录的下一个节点
Page Directory——记录在页中的展现(页目录)
- infmum单独一条记录为一组
- supremum这组记录可以是1-8条记录
- 剩下的分组中记录的条数范围只能在是 4~8 条之间
页满后的插入操作
当页插满之后,会重新申请一个页把,记录迁移到新的页当中去
B树和B+树的区别(阶数=5)