• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MySQL的索引系统采用B+树的原因解析

mysql 搞代码 4年前 (2022-01-09) 15次浏览 已收录 0个评论
文章目录[隐藏]

1.什么是索引?

索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。(就好像我们小时候用的字典,有了字典查到对应的字就会变快)

2.为什么需要索引?

首先我们需要了解一些概念和知识

  1. mysql数据存储在什么地方?—-磁盘
  2. 查询数据比较慢的,一般情况下是卡在哪了? —-IO
  3. (所以我们要提高IO的效率,那么如何提高呢?—- 次数和量两个层面,例如:搬砖,搬一次和搬十次耗费的力气是不一样的,一次搬一块和一次搬十块耗费的力气(占用IO资源)也是不一样的。所以我们尽可能的在满足自身需求的前提下,减少和IO的交互)
  4. 去磁盘读取数据的时候,是用多少读取多少嘛? —-磁盘预读
  5. 磁盘预读:内存跟磁盘在发生数据交互的时候,一般情况下有一个最小的逻辑单元,称为页,datapage,页一般由操作系统决定是多大,一般是4k和8k,而我们在进行数据交互的时候,可以取页的的整数倍来进行读取,innodb存储引擎每次读取数据为16k
  6. 局部性原理:数据和程序都有聚集成群的倾向,同时之前被访问过的数据和可能再次被查询,涉及空间局部性、时间局部性

通过以上几个概念我们大概知道索引是用来干嘛的了—-预先设计好索引系统,等我们查询数据的时候,减少和IO的交互来提高我们的查询效率。

3.如何设计索引系统?

我们还是先明白几个概念

  • 索引存储在哪?—- 本文来源gaodai#ma#com搞@@代~&码*网/磁盘,查询数据的时候会优先将索引加载到内存中
  • 索引在存储的时候需要什么信息?需要存什么字段值?

—— key:实际数据行中储存的值
—— 文件地址(指针、我们需要找到存储数据文件在哪就得靠文件地址)
—— offset:偏移量(如果我们要取文件中的某一条数据时,就需要用到偏移量)

  • 上面说的这种格式的数据要使用什么样的数据结构来储存?

—— 上面可知我们我们的数据格式是 K-V类型的
知道K-V格式数据那我们就知道使用什么数据结构来储存了,有哈希表、树(二叉树二分查找树二分平衡树红黑树B树B+树
综上所述,我们可以上面的数据结构来设计我们的索引系统

4.MYSQL索引系统是什么呢?

为什么不按照上面说的格式储存呢?


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MySQL的索引系统采用B+树的原因解析
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址