赞
踩
本篇文章想从宏观的角度谈谈mysql究竟是如何定位到一条行记录的。
参考:从数据页的角度看 B+ 树 | 小林coding (xiaolincoding.com)
首先外层是一个b+树,b+树的每个节点都是一个数据页,数据页包含了文件头,页目录,行数据。
我们先通过b+树定位到一个数据页,然后数据页里面是如何查询的呢?他会对行数据进行分组(按主键大小用链表相连),查询时对组进行二分查找,对组内元素用遍历的方式。(不用担心一个组内的元素特别多,遍历会花很多时间,innodb规定一个组最多8条行记录),以这种方式我们把链表O(n)的时间复杂度,缩小到了近似O(logn)的时间复杂度。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。