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

文章介绍了MySQL中的索引类型,重点对比了B-Tree和B+Tree的差异。B-Tree的记录与关键字存储在一起,而B+Tree的非叶子节点仅存储索引,记录全在叶子节点,且叶子节点间有指针连接,利于区间访问。虽然B-Tree查找时间相对较快,但B+Tree因能容纳更多元素、树高更小,减少了磁盘访问,故在实际应用中性能更优。此外,文章还提到了MyISAM和InnoDB存储引擎的索引文件结构。
摘要由CSDN通过智能技术生成

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索引结构图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值