mysql建表时指定聚簇索引(一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的)
mysql建表时指定聚簇索引
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的这一篇笔记我们简述一下
- 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聚簇索引的资料请关注开心学习网其它相关文章!
原文链接:https://www.cnblogs.com/ZhuChangwu/p/14807772.html
- mysqlint后面的4是什么意思(MySQL中intn后面的n到底代表的是什么意思)
- mysql实现数据的备份的命令(Windows下MySQL定时备份脚本的实现)
- 如何清除mysql的binlog
- mysql 加锁处理分析(mysql死锁和分库分表问题详解)
- mysql 查询都是0的值(MySQL按小时查询数据,没有的补0)
- mysql慢日志设置多少合适(MySQL慢查询日志的作用和开启)
- oraclemysql知识点(详解Mysql和Oracle之间的误区)
- mysql怎么查看表的字段(Mysql 获取表的comment 字段操作)
- mysql生成唯一订单号(MySQL高并发生成唯一订单号的方法实现)
- mysql存储json的方式(MySQL中查询json格式的字段实例详解)
- win10安装mysql8.0如何启动(win10下mysql 8.0.23 安装配置方法图文教程)
- mysql数据库简单操作(一篇文章教会你进行MySQL数据库和数据表的基本操作)
- mysql存储过程定义表(MySQL存储过程的创建、调用与管理详解)
- mysql一主两从架构(MySQL主从搭建多主一从的实现思路与步骤)
- docker部署mysql如何访问(完美解决docker安装mysql后Navicat连接不上的问题)
- mysql有哪些约束(MySQL完整性约束的定义与实例教程)
- 四月新番CP人气榜公布,《剃须》两度上榜,沙优不是女朋友(四月新番CP人气榜公布)
- 2019年外媒秋季新番动画角色CP排行榜,桐人和爱丽丝落榜(2019年外媒秋季新番动画角色CP排行榜)
- 新一小兰领衔 盘点动漫中的那些 远距离恋爱情侣(盘点动漫中的那些)
- 大事件 合肥四中火了(大事件合肥四中火了)
- 翼龙贷组织出借人调研 感受鄱阳 借 来的致富路(翼龙贷组织出借人调研)
- 2023新国风戏曲教育寒假集训班汇报演出《戏娃闹元宵》图文报道(2023新国风戏曲教育寒假集训班汇报演出戏娃闹元宵图文报道)
热门推荐
- 在python中导入模块有哪几种方式(Python不同目录间进行模块调用的实现方法)
- docker 部署netcore(关于Jenkins + Docker + ASP.NET Core自动化部署的问题避免踩坑)
- 开启wds点击保存没有反应(WDCP控制面板打开空白或无法登录的解决办法)
- mysql权限设置
- php中把字符串分开的函数(PHP字符串中抽取子串操作实例分析)
- filezillaserver怎么配置(解决FileZilla_Server:425 Can't open data connection 问题详解)
- ftp的使用方法(教你轻松玩转FTP)
- sql怎么取随机数(SQLServer 使用rand获取随机数的操作)
- 网站iis日志的位置
- springcloud alibaba nacos linux配置的详细教程(springcloud alibaba nacos linux配置的详细教程)