树结构概述

思路:采用二分法和数据平衡策略来提升查找数据的速度;

二叉排序树

两个节点,左小右大

在这里插入图片描述

  • 缺点:
    有可能退化成列表,树的深度差距大。

平衡二叉树

树的深度 差距不超过1
在这里插入图片描述

  • 缺点:
    追求平衡苛刻,插入时出现不满足的情况,需要花时间去做一些变换。

红黑树

放弃了追求完全平衡,追求大致平衡。插入节点的变换会更少

在这里插入图片描述

  • 缺点:
    一个节点只能2路查找

B树

多路查找
在这里插入图片描述

  • 缺点:
    查询速度不稳定

B+树

只拿 叶子节点 保存指针数据,构成了一个有序链表,查询速度更高、更稳定
在这里插入图片描述

  • 缺点:
    容量有限,节点满时就会分裂。分裂后逻辑上连续的叶子节点在物理磁盘上往往不连续,甚至分离的很远,但做范围查询时,会产生大量读随机IO
    写也一样:(7->1000->3->2000)数据存储在磁盘上相隔很远,随机io

  • mysql
    非叶子节点: 16KB,减去必要信息,剩下16252B
    mysql单行指针数据大约13.5B,一个节点能存储1203条左右;超过了就要分裂出下一层的节点(多一次IO)
    叶子节点:能存储15KB左右数据

3层B+树(3次IO),能存储2100W条数据

B*树

兄弟节点之间有指针。空间更合理。节点满时会向兄弟节点转移关键字
在这里插入图片描述

  • 缺点

LSM树(日志结构合并树)

  • 思路
    牺牲了部分读性能,用来大幅提高写性能

  • 方案
    就是假定内存足够大,每次有数据更新先留在内存,
    等到积累到最后多之后,再使用归并排序的方式将内存内的数据合并追加到磁盘队尾

  1. 在内存中构建一颗有序小树
  2. 内存小树越来越大,内存的小树会flush到磁盘上【磁盘内容有序】
  3. 读:不知道数据在哪棵小树上,因此必须遍历所有的小树

在这里插入图片描述

在这里插入图片描述

  • 缺点
    查询需要快速响应时性能不佳
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xyc1211

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值