广告
返回顶部
首页 > 资讯 > 数据库 >一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
  • 649
分享到

一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的

2024-04-02 19:04:59 649人浏览 八月长安
摘要

这一篇笔记我们简述一下 Mysql的B+Tree索引到底是咋回事? 聚簇索引索引到底是如何长高的。 一点一点看,其实蛮好理解的。 如果你看过了我之前的笔记,你肯定

这一篇笔记我们简述一下

  • Mysql的B+Tree索引到底是咋回事?
  • 聚簇索引索引到底是如何长高的。

一点一点看,其实蛮好理解的。

如果你看过了我之前的笔记,你肯定知道了mysql进行CRUD是在内存中进行的,也就是在Buffer Pool中。然后你也知道了当内存中没有Mysql需要的数据时,MySQL会从Disk中通过io操作将数据读入内存中。读取的单位呢就是:数据页

一般数据页长下面这样

没错,数据页中存储着真实的数据,而且数据页在内存中是以双向联表的方式组织起来的!如下图

而在B+Tree的设定中,它要求主键索引时递增的,也就是说如果主键索引时递增的话,那么就要求右侧的数据页中的所有数据均比左侧数据页中的数据大。但是很明显上图并不符合,因此需要通过页分裂来调整成下面这样。

好,现在你回想一下,之前你肯定有听说过:MySQL的B+Tree聚簇索引,只有叶子节点才存储真实的数据,而非叶子节点中存储的是索引数据,而且叶子节点之间是通过双向链表连接起来

没错,那所有的B+Tree的叶子节点就是上图中的数据页,并且它们确实是通过双向链表关联起来的!

我们接着往下看,如果只看上图由数据页连接起来的双向链表的话,这时如果我们检索id=7的数据行,那会发生什么?

很明显我们要从头开始扫描!

那你可能会问:方才不是说B+Tree要求主键是递增的嘛?并且有页分裂机制保证右边的数据页中的所有数据均比它左边的数据页的索引值大。那进行二分查找不行嘛?

答:是的,确实可以在单个数据页中进行二分查找,但是数据页之间的组织关系是链表呀,所以从头开始遍历是避免不了的。

那MySQL怎么办的呢?

如下图:MySQL针对诸多的数据页抽象出了一个索引目录

那有了这个索引目录我们再在诸多的数据页中检索时看起来就容易多了!直接就拥有了二分检索的能力!

而且这个所以目录其实也是存在于数据页中的,不同于叶子节点的是,它里面知识存储了索引信息,而叶子节点中存储的是真实数据?

而索引页的诞生也就意味着B+Tree的雏形已经诞生了!

随着用户不断的select,buffer pool中的数据页的越来越多,那么索引页中的数据也会水涨船高。当现有的索引体量超过16KB(一个数据页的容量)时就不得不搞一个新的索引页来存储新的索引信息。这时这颗B+Tree就会慢慢变得越来越胖。

那你也知道B+Tree是B树的变种,而B树其实可以是2-3树、2-3-4数....等等M阶树的泛称,当每个节点中能存储的元素达到上限后,树就会长高(上一篇文章有讲过)。

就像下图这样:

以上就是一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的的详细内容,更多关于MySQL聚簇索引的资料请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: 一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的

本文链接: https://www.lsjlt.com/news/126790.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
    这一篇笔记我们简述一下 MySQL的B+Tree索引到底是咋回事? 聚簇索引索引到底是如何长高的。 一点一点看,其实蛮好理解的。 如果你看过了我之前的笔记,你肯定...
    99+
    2022-11-12
  • MySQL聚簇索引和非聚簇索引的区别是什么
    这篇文章主要介绍“MySQL聚簇索引和非聚簇索引的区别是什么”,在日常操作中,相信很多人在MySQL聚簇索引和非聚簇索引的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL聚簇索引和非聚簇索引...
    99+
    2023-07-02
  • MySQL中的聚簇索引、非聚簇索引、联合索引和唯一索引是什么
    今天小编给大家分享一下MySQL中的聚簇索引、非聚簇索引、联合索引和唯一索引是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章...
    99+
    2023-04-21
    mysql
  • mysql中聚簇索引与非聚簇索引的区别是什么
    mysql中聚簇索引与非聚簇索引的区别是什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。通常情况下,建立索引是加快查询速度的有效手段。但...
    99+
    2022-10-18
  • MySQL中的聚簇索引、非聚簇索引、联合索引和唯一索引详细介绍
    目录一、索引类型二、聚簇索引和非聚簇索引三、覆盖索引四、联合索引最左前缀匹配原则索引下推五、唯一索引一、索引类型 索引根据底层实现可分为B-Tree索引和哈希索引,大部分时候我们使用的都是B-Tree索引,因为它良好的性...
    99+
    2023-04-19
    MySQL索引 MySQL聚簇索引 MySQL非聚簇索引 MySQL联合索引 MySQL唯一索引
  • mysql中的聚簇索引是什么
    mysql中的聚簇索引是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。聚簇索引聚簇索引也叫簇类索引,是一种对磁盘上实际数据...
    99+
    2022-10-18
  • mysql中的非聚簇索引是什么
    今天就跟大家聊聊有关mysql中的非聚簇索引,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。mysql中非聚簇索引是:非聚簇索引,索引的一种。索引分为...
    99+
    2022-10-18
  • MySQL聚簇索引的优缺点是什么
    这篇文章主要介绍“MySQL聚簇索引的优缺点是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL聚簇索引的优缺点是什么”文章能帮助大家解决问题。1. 什么...
    99+
    2023-04-21
    mysql
  • mysql中聚簇索引的页分裂原理是什么
    这篇文章给大家介绍mysql中聚簇索引的页分裂原理是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。聚簇结构的特点:根据主键查询条目时,不用回行(数据就在主键节点下)如果碰到不规则数...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作