当前位置: 首页 > article >正文

【MySQL】查询原理 —— B+树查询数据全过程

使用B+树作为索引结构的原因:


一种自平衡树:

B+树在插入和删除的时候节点会进行分裂和合并操作,以保持树的平衡,存在冗余节点,使得删除的时候树结构变化小,更高效。

高度不会增长过快,查询磁盘I/O次数减少:

B+树是一种多叉树,非叶子节点只保存主键或索引值和页面指针,使得每一页能够容纳更多记录,内存中存放更多索引,容易命中缓存,查询I/O次数减少。

范围查询能力强:

叶子节点通过链表连接定位到叶子节点的起点后,只需要顺序扫描链表后续的数据,非常高效。

根节点开始,根据键值大小确定位置于左/右子树

非叶子节存储主键和页号,通过页号定位到叶子节点(默认16k大小),可存储多条数据。

通过页目录索引快速找到记录,页目录每个槽指向对应分组的最大记录。

通过二分查询,利用槽定位数据所在组。

InnoDB规定:

第一个分组只有一条记录

中间的分组4-8条记录

最后一个分组1-8条记录

B+树和B树的区别:

B+树更加稳定,平均,都要从根结点查询到叶子节点。

B+树便于区间查找,B树只能每一层遍历查找。

B树每个节点都存储数据,B+树存储key和指针,内存中可存放更多索引页,减少磁盘查询次数。


http://www.kler.cn/news/325780.html

相关文章:

  • docker安装Portainer CE
  • 华为eNSP:端口隔离
  • 【AI大模型】Prompt Engineering
  • tr命令:替换文本中的字符
  • PHP array+array与array_merge()的区别
  • Vue.js与Flask/Django后端的协同开发研究
  • 2-3树(2-3 Tree):原理、常见算法及其应用
  • JAVA开源项目 新闻推荐系统 计算机毕业设计
  • Flink 本地 idea 调试开启 WebUI
  • 【高分系列卫星简介——高分五号卫星(GF-5)】
  • 【Go语言基础——一个Go语言项目典型的文件结构示例】
  • 扩散模型DDPM代码实践
  • 黑马头条day7-app端文章搜索
  • Python语言中的重要函数对象用法
  • 【分布式微服务云原生】8分钟探索RPC:远程过程调用的奥秘与技术实现
  • 资质申请中常见的错误有哪些?
  • C++之设计模式
  • 商标名称注册查询,到底是查询什么!
  • 云计算Openstack
  • 全局异常处理与数据绑定:深入理解Spring的@ControllerAdvice
  • Oracle可编辑视图
  • 0基础学习QT——配置开发环境
  • 国内旅游:现状与未来趋势分析
  • 二、鼠标的解锁与锁定
  • ubuntu18.04安装教程
  • CSS-Day2
  • 技术成神之路:设计模式(十六)代理模式
  • 全球55%的开发者都在用的分布式云到底怎么样?
  • Qt CMake
  • 极狐GitLab 签约比博斯特,助力新能源智能底盘企业研发提效