数据库的索引
数据库当中存储着海量的数据,光是数据库索引就有很多,当我们要查找数据的时候,能把整个索引树读入到内存中吗?显然不行,因此我, 只能以索引树的节点作为基本单元,每次把单一节点从磁盘读取到内存中。为了减少磁盘I/O,我们需要把原本瘦高的二叉树结构变得”矮胖“,让每一个节点承载更多的元素,拥有更多的孩子。
B树
B树单一节点拥有的最多子节点的数量,称为B树的阶。
B树虽然可以改善数据库查询的性能,但是却存在一个不足之处,不方便进行范围查询。数据库的查询,不止涉及单一结果查询,也会涉及一个区间内结果的查询,对于前者,B树很容易实现,对于后者,B树实现起来会非常烦琐,需要进行中序遍历,在父节点和子节点之间不断切换。
具有以下特点:
1、根节点至少有两个子节点
2、每个中间节点都包含k-1个元素(也称为关键字)和k个孩子,其中m/2<=k<=m。
3、每一个叶子节点都包含k-1个元素
4、所有叶子节点都位于同一层
5、每个节点中的元素从小到大排列,节点当中
k-1个元素正好是k个孩子包含的元素的值域划分
B+树
B+树是B树的升级版,它和B树有一些共同点,但也具备新的特征。