二叉树->b-树,解决的是读索引的IO次数问题
在真实的数据库中往往索引本身的数据量也是非常庞大的
树的查找,其实是每一层需要做一次判断因为索引很大,只能存在文件里,不能一次加载,所以没判断一层,都需要有一次磁盘IO,所以查找IO次数最坏的情况
就是树的高度-1,加入你要的节点在最后一层的话
二叉树,是只有两个子节点的一单数据量一大的话
树高会很恐怖B-Tree,的度是没有限制的
可以打打减少这个数的高度,从而减少磁盘读的次数b-tree -> b+tree :这个是针对IO的再次优化
b+tree,的父节点是不存数据的
数据库索引,其实一个节点刚好占的是硬盘的一页空间
由于索引节点不存数据
一个硬盘页,也就是一个节点的度就可以更大
可以最大程度减少树的高度
之所以一个节点刚好占一页,也是IO的问题,一次硬盘IO只能读一页
这是结构上的改进
效果就是一个节点一次IO的度更大了
他这个意思就是说,如果有索引,一次索引查找,基本不会超过2次硬盘IO
这还只是b-tree
b-tree这玩意儿就读B树
很多人读B减数是误读