B-Tree, B+Tree

简介: B-Tree, B+Tree

数据库索引为什莫不用二叉树


二叉搜素平衡树的搜索效率高,但是数据库索引需要大量进行I/O操作·。索引树中的每个节点都对应磁盘页,每次读取都是加载指定的磁盘页。为了减少I/O操作,所以需要降低索引树的高度,使之形成矮胖的特征。


B树


1.B树每个节点可以有多个子树, M阶B树表示该树每个节点最多有M个子树


2.根节点至少有两个子树, 中间节点都包含k-1个关键字,和K个子树,其中(M/2 <= K<= M)


3.所有的叶子节点都在用一层


4.每个系欸但中的元素从小到大排序,节点当中k-1个关键字正好被k个子树包含的元素的值域划分

20200714082224529.png

B+


和B树基本相同,树中的节点不保存数据,同样大小的磁盘页可以容纳更多的数据,所有的数据都保存在B+树的叶子节点。范围查找更具有优势。


1.有k个子树的中间节点包含有k个关键字(B树中是k-1个关键字), 每个关键字不保存数据,只用来索引,所有数据都保存再叶子节点中。


2.所有的叶子节点中包含了全部关键字的信息,以及只想这些关键字记录的指针,且叶子节点本身依靠关键字的大小自小而大顺序链接

20200714083157939.png

相关文章
|
7月前
|
缓存 索引
图解B Tree和B+ Tree
图解B Tree和B+ Tree
74 0
|
6月前
|
存储 算法 编译器
|
7月前
|
定位技术 索引
R-tree 总结
R-tree 总结
90 0
|
7月前
|
存储 算法 Python
赢者树(Losers Tree)
赢者树(Losers Tree)是一种经典的数据结构,常用于外部排序(External Sorting)算法中,将多个有序的子序列合并成一个有序的序列。赢者树本质上是一棵完全二叉树,每个节点存储着一个子序列的最小值。每次合并操作时,比较各个子序列的最小值,选出最小值并将其存入输出序列中,同时将该最小值所在的节点从赢者树中删除,并将其对应的子序列的下一个元素作为新的最小值插入到赢者树中进行调整,直到所有子序列的元素都被合并完成。
81 3
树(Tree)和二叉树(Binary Tree)——(代码篇)
树(Tree)和二叉树(Binary Tree)——(代码篇)
78 0
|
存储 分布式数据库
树(Tree)和二叉树(Binary Tree)——(概念篇)
树(Tree)和二叉树(Binary Tree)——(概念篇)
79 0
|
存储 数据格式
1367:查找二叉树(tree_a)
1367:查找二叉树(tree_a)
|
存储 数据库 索引
B-Tree和B+Tree特点
B - Tree和B + Tree特点
157 0
1127. ZigZagging on a Tree (30)
#include #include #include using namespace std; int n; const int maxn = 31; struct node { int data; node *l,...
1188 0
对于B-Tree B+Tree 红黑二叉树我的理解
B-Tree和B+Tree主要区别就是B+Tree的非叶子节点不存储数据,只有叶子节点存储数据, 主要参考文章:容易看懂的B-Tree文章 百度百科-B-Tree百度百科-B+Tree
1837 0