索引的底层数据结构、B+树的结构、为什么InnoDB使用B+树而不是B树呢
创作时间:
作者:
@小白创作中心
索引的底层数据结构、B+树的结构、为什么InnoDB使用B+树而不是B树呢
引用
CSDN
1.
https://m.blog.csdn.net/qq_73301411/article/details/145411692
在数据库系统中,索引是提高查询效率的关键数据结构。本文将深入探讨MySQL中常用的索引数据结构,特别是B+树的结构特点及其在InnoDB存储引擎中的应用。
索引的底层数据结构
MySQL中常用的是Hash索引和B+树索引
Hash索引:基于哈希表实现的,查找速度非常快,但是由于哈希表的特性,不支持范围查找和排序,在MySQL中支持的哈希索引是自适应的,不能手动创建
B+树的结构
B+树 是一种高效的多路平衡树,适合磁盘存储和范围查询。它的结构特点包括数据集中在叶子节点、叶子节点连接成链表、内部节点仅存储键值和指针。在数据库和文件系统中,B+树 被广泛应用于索引和数据存储,具有查询性能稳定、适合高并发等优势。
如图:B+树具有以下特点:
- 只有叶子结点才存放数据,中间节点都是用来存放目录项作为索引
- 非叶子节点分为不同层次,通过分层来降低每一层的搜索量
B+树的搜索策略:
- 从根节点开始,通过二分法快速定位到符合页内范围包含查询值的页,在中间结点中继续根据二分法来寻找符合页内范围复合查询值的页,接着在叶子节点中通过槽查找记录使用二分法快速定位要查询的记录在哪个槽,找到槽后再遍历槽中所有的记录,找到寻找的分组。
为什么InnoDB使用B+树而不是B树呢
B-Tree:
- 每个节点既存储数据也存储子节点的指针
- 数据分布在所有的节点中,包括内部节点和叶子节点
- 查找时可能会直接在内部节点中就能找到数据不需要遍历到叶子节点
B+Tree:
- 只有叶子结点存储数据,内部节点仅存储键值和子节点的指针
- 所有叶子节点通过指针连接成一个有序链表
- 查找时必须遍历到叶子节点才能获取数据
B+Tree的优势:
更适合磁盘I/O:
- 因为B+树的内部节点不存储数据只存储键值和指针,所以每个节点可以存储更多的键值,从而降低树的高度,树的高度越低磁盘I/O次数越少,查询性能越高(索引数据量很大,一定是存储在磁盘中的,每访问一个节点就会进行一次磁盘IO操作,所以树的高度越低,一次查询的期望IO次数就越少,效率就越高)
- B+树的叶子节点通过指针连接成链表,更适合范围查询如(BETWEEN,>,<等操作),而树的范围查询需要在不同层级的节点之间跳转,效率较低
更适合数据库场景:
- 数据集中在叶子节点上,查询时都需要遍历到叶子节点,这使得查询性能更稳定。B树的数据可能分布在内部节点和叶子结点,查询性能不稳定
- 数据库查询中经常需要使用范围查询,B+树的叶子节点链表结构非常适合这种场景,而B树需要多次遍历内部节点
更适合并发控制:
- 在并发场景下,B+树的叶子节点链表可以更容易地支持范围查询和顺序访问
- 而B树的结构在并发访问时可能需要更多的锁机制(数据分布在内部节点和叶子节点。节点分裂与合并涉及多个节点。锁的粒度较大,容易导致锁冲突)
B+树在InnoDB中的具体应用:
主键索引(聚簇索引):
InnoDB使用B+树实现主键索引,叶子节点存储完整的数据行
这种设计是的通过主键查询数据时可以直接获取数据,不需要回表
二级索引(非聚簇索引):
InnoDB的二级索引也是B+树,但是叶子节点存储的是主键值,通过二级索引查询时,先获取主键值再通过主键索引查找数据(回表)
热门推荐
掌握这款万能凉拌汁,三道凉菜轻松搞定!
乡野美味:探寻农村野菜的独特魅力与营养价值之米米蒿
低调开工!山大龙山校区终于来了,历经9年波折!
副总经理辞职、大股东减持,小熊电器遭遇多事之秋?
超10万人大型队列显示,每日饮用牛奶超过这个量,患心血管疾病的风险大增
这6种抗疲劳的食物,快收好!
落日山丘八音盒怎么拿到 落日山丘八音盒获得方法
深入探索手动咖啡研磨机,专业文章告诉您如何选择
天庭十大女神,谁才是你心中的最强神仙?
孩子眼距近就是“斗鸡眼”吗?医生:可以这么自查
雪铁龙C4L如何判断需要做四轮定位?四轮定位有必要做吗?
三角梅多久才开花一次
存货减值损失是什么科目
西扎新作:塞拉尔维斯博物馆“西扎翼”
电脑提示“无法启动此程序,因为计算机中丢失dll”怎么办?
早期没有明显症状,如何预防肺腺癌?
06后四大主攻:李晨瑄董禹晗有潜力,孙虹云全面,黄悦鑫太像朱婷
连奕名个人履历简介及代表作品
灵芝的功效与作用:从免疫增强到心血管保健
定频变频空调的区别及选择指南
主题月生活法,对抗庸碌日常的自救之道
中国信通院:10月国内市场手机出货量2967.4万部,其中5G手机占比90.1%
身上的痣越来越多是什么原因
连理枝:形态、分类、生长习性及应用全解析
网购退款成功却迟迟收不到钱 商品退款的返程路堵在哪了?
乳胶床垫全面解析:功效、选购指南与最新趋势
腊肠和香肠的区别,你真的分得清吗?
傅里叶红外光谱仪:原理、结构、特点及应用
“拉拉渡”停摆,边城“没有了灵魂”,渡船运营公司:对岸码头遭封堵无法停靠
到底如何熬,才能发挥中药最好的效果?注意看好这4点