【mysql 详解】mysql 树详解(b树,b+树,b-树,红黑树)

b树,b+树,b-树,红黑树详解

前言 - 平衡二叉树

  • 平衡二叉树查询效率高,可以通过降低树的深度提高查找效率
  • 数据量非常大的时候,导致二叉查找树深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率地下
  • 内存空间不够容纳二叉树所有节点的情况

B树

  • 一种自平衡数据结构,节点可以有两个以上的子节点
  • 每个节点的元素个数越多,高度越低,查询所需的I/O次数越少
  • 每个节点都存储key和data,所有节点组成树,并且叶子节点指针未null

B+树

  • 中介节点不保存数据,只用来索引
  • 只有叶子节点存储data,叶子节点包含全部键值,叶子节点不存储指针
  • 灭个叶子节点增加一个指向相邻叶子节点的指针,这样一棵树成了数据库系统实现索引的首选数据结构。
  • 内节点不存储data,这样一个节点就可以存储更多的key。
  • 在构建 m 叉树时我们在选择 m 大小的时候,要尽量让每个节点的大小等于一个页的大小。这样读取一个节点,只需要一次磁盘 IO 操作

为什么使用B+tree树做索引底层数据结构

二叉树
  1. 数据量大的时,树的高度太高,查询效率低
  2. 每个节点保存的数据太小,I/O操作过大
B-tree(M叉搜索)
  1. 关键字分布在整个树中
  2. 中序遍历获取全部节点
Hash索引
  1. 精确匹配查询才有效,范围查找不合适没有规律
  2. hash碰撞
B+Tree
  1. 每个节点只存关键字 不存数据,存更多关键字
  2. 扫表只需要扫描全部的叶子节点

参考

b树,b+树,b-树,红黑树详解一锅端
B树与B+树简明扼要的区别
InnoDB索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值