B树,B+树,二叉树

二叉树

BST树,AVL树,红黑树统称为二叉树。

BST树:

当数据插入是一个链表的时候,会发现数据的呈现形式是一个链式结构,很明显不符合我们使用的情况

 AVL树:

通过浪费插入性能带来读取性能的提升,左字树与右字树最大不能超过1。

 红黑树:

最长子树,只要不超过最短子树的2倍即可,随着数据的增长,树就会变高就会导致io变多,最终会影响查询变慢.
它的每个子节点只能关联两个数据

 B树

在B树的结构中,查询数据的时候要从主节点依次向下,且每个节点都又自己的数据data,

以4层为例子,假如data数据占用1kb,每个磁盘块是16kb,也就是16x16x16=4096条,根据实际开发数据过少

B+树

 

B+树是在B树的基础上做的优化  
1.为了降低树的高度
2.为了将数据变为多个区间,区间越多,数据检索越快
3.非叶子节点存储key,叶子节点存储key和数据
4.叶子节点两两指针相互链接(符合磁盘的预读特性),顺序查询性能更高

 

因为在B+树中所有的叶子节点都有,所以我们可以把key携带的data数据全部放到叶子节点

而在各个的主节点里面只需要存放key就好

以4层为例,假如磁盘块中的key占用20个字节,data数据为1kb,一个磁盘块为16kb,(16x1024/20) x  (16x1024/20) x 16约为10,737,418.24

注:B+树中千万级别的数据,用3-4层即可。


posted @ 2021-07-15 15:07  danRiver  阅读(214)  评论(0编辑  收藏  举报