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
- mysql char和varchar区别(MySQL CHAR和VARCHAR存储、读取时的差别)
- mysql分组函数入门(详解MySQL 数据分组)
- 配置mysql可以远程登录(开启MySQL远程连接的方法)
- mysql一般使用的事务隔离级别(详解MySQL中事务隔离级别的实现原理)
- mysql密码找回方法(MySQL8忘记密码的快速解决方法)
- docker 增大mysql连接数(docker中修改mysql最大连接数及配置文件的实现)
- mysql大量数据怎么处理(MySQL删除和插入数据很慢的问题解决)
- mysql带log的版本(聊聊MYSQL中Redo Log是什么?)
- mysql8.0.23.0官方安装手册(MySQL8.0.23安装超详细教程)
- mysql8.0详解(MySQL 8.0 的 5 个新特性,太实用了!)
- 如何打开mysql8.0客户端服务(MySQL mysqladmin客户端的使用简介)
- mysql表锁行锁和分页锁(MySQL 不停机不锁表主从搭建)
- 如何正常查看mysql存储数据文件(Mysql文件存储图文详解)
- python连接到本地的mysql数据库(Python实现连接MySql数据库及增删改查操作详解)
- mysql程序中判断select返回空值(解决MySQL读写分离导致insert后select不到数据的问题)
- mysql创建存储过程的代码(MySQL修改存储过程的详细步骤)
- 入秋后的第二场苹果发布会来了 全新M1系列芯片登场(入秋后的第二场苹果发布会来了)
- 苹果正式发布自研芯片M1 5nm 32核心 彻底放弃Intel(苹果正式发布自研芯片M1)
- 苹果自研芯片跑分对比 A16芯片排名靠后,M1系列霸榜(苹果自研芯片跑分对比)
- X86处理器的梦魇 苹果M1自研芯片到底有多强(苹果M1自研芯片到底有多强)
- 泰剧《爱欲之神》Boom kitkong和Great合体杂志(泰剧爱欲之神Boomkitkong和Great合体杂志)
- 素人恋爱综艺火药味十足 男生为赢得芳心集体扯头花,真是出好戏(素人恋爱综艺火药味十足)
热门推荐
- css3边框阴影的属性(css3 border-radius属性详解)
- 执行mysqldump命令后数据库无反应(关于xampp启动不了mysql数据库的解决方法)
- php入门基本笔记(PHP之认识二关于Traits的用法详解)
- ipython命令行查看文件夹(对IPython交互模式下的退出方法详解)
- 织梦列表页分页怎么用(织梦首页和列表页怎么调用自定义字段)
- display flex 布局(解决display:flex属性 justify-content: space-between换行后的排版问题)
- php数据类型图解(php使用filter_var函数判断邮箱,url,ip格式示例)
- 新建的dedecms被黑(解决Dedecms生成RSS地图地址出错全都多了一个网址的问题)
- Visual Studio 编译中活动平台AnyCPU
- yii2支持的数据库(Yii框架日志操作图文与实例详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9