简单易懂MySql索引介绍,B-tree和B+tree的区别,MySql存储引擎MyISAM,InnoDB介绍

MySql索引介绍,B-tree和B+tree的区别

索引介绍

索引是一个特殊排好序的数据结构,能够帮助我们快速的获取数据

索引数据结构

二叉树
红黑树
Hash表
B-Tree
B+Tree

B-Tree和B+Tree介绍和区别

什么是B-Tree

B-Tree叶子节点具有相同的深度,叶子节点的指针为空
所有索引元素不重复
节点中的数据索引从左到右递增排序
B-tree结构图

B+Tree

B+Tree非叶子节点不存储data,只存储索引(冗余),可以放更多的索引
叶子节点包含所有索引字段
叶子节点用指针连接,提高区间访问的性能
B-Tree数解构图B+Tree模拟图
可以通过此链接模拟各种索引

B-Tree和B+Tree的区别

  1. B-Tree 的关键字和记录是放在一起的,叶子节点可以看作外部节点,不包含任何信息;B+Tree 的
    非叶子节点中只有关键字和指向下一个节点的索引,记录只放在叶子节点中。
  2. 在 B-Tree 中,越靠近根节点的记录查找时间越快,只要找到关键字即可确定记录的存在;而
    B+Tree 中每个记录的查找时间基本是一样的,都需要从根节点走到叶子节点,而且在叶子节点中
    还要再比较关键字。从这个角度看 B-Tree 的性能好像要比 B+Tree 好,而在实际应用中却是
    B+Tree 的性能要好些。因为 B+Tree 的非叶子节点不存放实际的数据,这样每个节点可容纳的元
    素个数比 B-Tree 多,树高比 B-Tree 小,这样带来的好处是减少磁盘访问次数。尽管 B+Tree 找到
    一个记录所需的比较次数要比 B-Tree 多,但是一次磁盘访问的时间相当于成百上千次内存比较的
    时间,因此实际中 B+Tree 的性能可能还会好些,而且 B+Tree 的叶子节点使用指针连接在一起,
    方便顺序遍历(例如查看一个目录下的所有文件,一个表中的所有记录等),这也是很多数据库和
    文件系统使用 B+Tree 的缘故

Hash索引

hash索引结构图

Mysql存储引擎

MyISAM(非聚集)

存储的数据结构:
.frm:表结构
.myd:数据文件
.myI:索引文件

索引文件图:
MyISAM索引结构图

InnoDB(聚集)

存储的数据结构:
.frm:表结构
.iBD:索引文件

索引文件图:
InnoDB索引结构图

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值