为什么说树的高度越低,磁盘io次数越少

引言

之前看过很多资料,都说b+树的高度低,导致磁盘io次数少,其实一直都没有很好的理解这点,这几天看了些数据库方面的知识,感觉对这句话的理解更加深了,以下是我的理解。

索引的存取

索引如何存储

索引是以文件的形式存到磁盘上的,每次插入一个索引的时候是往文件里写入一个节点的字节数据,这个节点的数据包含后一个节点的地址,数据库中的最小存储单元是一页,以mysql为例是16kb大小的文件块,那么其实后一个节点的地址就可以用页号和页内偏移量去表示。

索引是如何取出的

举个例子,需要找到索引为3的节点,从根节点开始读取,发现索引不是3,那么从根节点获取到下一个节点的页号和页内偏移(不一定是保存这个偏移量,可以是通过某种算法算出页号和页内偏移),从而再次去文件里寻找到该节点。其实为啥要一个节点一个节点的读取呢,因为数据的长度肯能是可变的,你无法知道下个节点该读取多少的字节才能完整读出来。

总结

再来看下这个问题,一个读取文件的操作,我们可以看作和磁盘打交道的操作,尽可能保持读取文件的操作变少就是我们的目的。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享