Mysql索引Innodb及底层存储结构B+树

本文详细介绍了MySQL中InnoDB存储引擎的索引机制,特别是B+Tree作为索引数据结构的原因。阐述了索引的工作机制,分析了二叉树和平衡二叉树的不足,指出B+Tree如何有效利用磁盘预读能力并保持查询稳定性。同时,解释了InnoDB的聚集索引特点和最左匹配原则。
摘要由CSDN通过智能技术生成

索引是什么及工作机制?

索引是为了加速对表中数据行的检索而创建的一种分散存储的数据结构。其工作机制如下图:
在这里插入图片描述
上图中,如果现在有一条sql语句 select * from user where id = 40,如果没有索引的条件下,我们要找到这条记录,我们就需要在数据中进行全表扫描,匹配id = 13的数据。

如果有了索引,我们就可以通过索引进行快速查找,如上图中,可以先在索引中通过id = 40进行二分查找,再根据定位到的地址取出对应的行数据。

MySQL数据库为什么要使用B+TREE作为索引的数据结构?
二叉树为什么不可行
对数据的加速检索,首先想到的就是二叉树,二叉树的查找时间复杂度可以达到O(log2(n))。下面看一下二叉树的存储结构:
在这里插入图片描述二叉树搜索相当于一个二分查找。二叉查找能大大提升查询的效率,但是它有一个问题:二叉树以第一个插入的数据作为根节点,如上图中,如果只看右侧,就会发现,就是一个线性链表结构。如果我们现在的数据只包含1, 2, 3, 4,就会出现
在这里插入图片描述以下情况:

如果我们要查询的数据为4,则需要遍历所有的节点才能找到4,即,相当于全表扫描,就是由于存在这种问题,所以二叉查找树不适合用于作为索引的数据结构。

平衡二叉树为什么不可行
为了解决二叉树存在线性链表的问题,会想到用平衡二叉查找树来解决。下面看看平衡二叉树是怎样的:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值