innodb是怎样存储数据的

存储结构

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条

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。