存储结构
innodb存储数据是有序的,依据主键排序,采用的数据结构是B+Tree,充当B+Tree节点的是页
采用B+Tree是因为B+Tree 只有叶子节点存储数据,非叶子节点存储索引,而BTree是每个节点都会存储数据,因此非叶子节点能存储更多的索引,降低树的高度
image
页
innodb最小存储单位是页,因此io的最小单位也是页,即mysql读取数据,每次往内存加载数据是加载的整页的数据,
每个页大小默认是16k
每页至少有2行记录,每行记录不超过8k,若超过8k,则溢出数据前768字节放在数据页,其他字节放在溢出页
每页大小使用超多15/16时,再次插入数据时,若主键大于当前页的最大值,则开辟新页存储,若主键大小在本页内是中位,则会拆分页
每页大小小于50%时,会自动寻找上下页进行合并
数据页内会对所有的记录按主键排序分组,最小记录单独一组,最大记录所在组条数限制为1-8条,其他组条数限制为4-8条