MySql底层索引原理

文章介绍了MySQL选择B+tree作为索引结构的原因,强调其减少IO次数、支持范围查询和保持查询性能稳定的优势。B+tree的叶子节点存储数据和双向循环列表,适用于InnoDB存储引擎的聚集索引。有序的主键能避免页分裂,提高性能。

前言

我们都知道MySql索引效率很高!那其中的原理是什么呢?先跑出个问题来:二叉树、红黑树(二叉平衡树)、BTree(平衡多叉树)、B+tree这几种类型中哪一种是mysql索引所选择的呢?

这个问题好多同学回答不出来,回去百度,结果也不是太明白吧!

这里我告诉大家,mysql所选的是B+tree,那B+tree又是什么呢?

B+tree优点

B+树:其实他是Btree的变种,是在他的基础上做了优化,

优点:

1、IO次数更少

2、范围查询简便

3、查询性能稳定

特征:

  1. 有K个子树的中间结点包含有k个元素(B树中有k-1个元素),每个元素只保存索引,而不保存数据,所有数据都保存在了叶子节点(k指的是每个节点的关键字个数,另外还有一个m指的是这棵树的高度)
  2. 所有数据都存放在了我们叶子节点上面,以及指向包含这些元素记录的指针(双向循环列表),并且我们的叶子节点是从小到大的顺序排列的,这样便于我们查找和排序。
  3. 所有的子节点都保存着中间节点元素

InnoDB存储引擎

InnoDB中的主键索引其实就是聚集索引,当然所有的数据都存在了主键索引位于的聚集索引B+Tree结构的叶子节点之中。这就是为什么我们在设计主键的时候要求我们的铸剑师有序原因了。假如我们的大小随机,那每次进来叶子节点的位置随机的,这样就会出现我们的页分裂,从而导致性能下降!

如果我们按照有序来处理,则每次都是按照顺序一排一排的进行排列,这样能够完美的比来了我们的页分裂。

好的,今天就先讲到这里,欢迎大家留言讨论

欢迎大家关注我的工种昊 《coder练习生》

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ybb_ymm

你的鼓励会是对我最大的支持

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

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

打赏作者

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

抵扣说明:

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

余额充值