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

【MySQL】为什么使用B+树做索引

MySQL的innoDB引擎使用的是B+树的结构来存储索引的,那么为什么会使用B+树呢?为什么不使用其他的结构?本篇我们深入MySQL底层来了解B+树。本文中说到的MySQL都是InnoDB引擎的
在这之前,先了解一下InnoDB是如何存储数据的
MySQL是根据数据页的方式来存储数据的,每个数据页包含七个部分请添加图片描述
把这些页连接起来,相当于一个双向链表
那索引就相当于是这些数据页的目录,索引的作用就是更快的找到这些数据页
那么B+树的设计就符合这些特点
B+树仅在叶子节点存储数据,在非叶子节点,存储的是索引值,就可以使B+树在非叶子节点在相同空间的情况下可以存储更多的索引来指向叶子节点,所以B+树看起来更矮胖,层级更低

为什么不用B树

这就要说一下B树与B+树的区别了
B树在自己的非叶子节点也存储了数据,在数据页相同容量的情况下,B树存储的数据条数更少,就会导致B树的层级变高
那么又有人会问,层级高有什么影响吗?
当然是有的,MySQL会将数据持久化到磁盘中,在每一次遍历节点的时候都是一次I/O操作,我们知道I/O操作是分成慢的,同时也要耗费较多的资源,所以MySQL在设计索引结构的时候就要设计成层级较低的结构
而且B+树比B树更节约磁盘资源。

http://www.lryc.cn/news/185890.html

相关文章:

  • php 安装mongodb扩展模块,rdkafka模块
  • 【数据结构】初探时间与空间复杂度:算法评估与优化的基础
  • SpringCloud Alibaba - Sentinel 限流规则(案例 + JMeter 测试分析)
  • uniapp 条件编译 APP 、 H5 、 小程序
  • 深度学习——权重衰减(weight_decay)
  • nignx如何部署让前端不用清缓存就可以部署
  • CSS3实现动画加载效果
  • springboot定时任务Scheduled使用和弊端分析
  • openGauss学习笔记-93 openGauss 数据库管理-访问外部数据库-oracle_fdw
  • 【Git】Git下载安装环境配置 下载速度慢的解决方案
  • 常见源协议介绍
  • 大数据概述(林子雨慕课课程)
  • ES6 class类关键字super
  • C++并发与多线程(4) | 传递临时对象作为线程参数的一些问题Ⅰ
  • CentOS Integration SIG 正式成立
  • 智能AI系统源码ChatGPT系统源码+详细搭建部署教程+AI绘画系统+已支持OpenAI GPT全模型+国内AI全模型
  • 软考程序员考试大纲(2023)
  • 【重拾C语言】七、指针(一)指针与变量、指针操作、指向指针的指针
  • Kafka源码简要分析
  • react 按住ctrl键,点击时会出现菜单的问题修复
  • 【虚拟机栈】
  • Linux系列讲解 —— 【fsck】检查并修复Linux文件系统
  • gitlab突然提示我要输入密码了。
  • 业务测试常见问题(一)
  • IntelliJ IDEA失焦自动重启服务的解决方法
  • 终端准入控制系统,保障企业内网安全的关键防线
  • mysql-执行计划
  • 金蝶云星空和旺店通·企业奇门接口打通对接实战
  • 在服务器上使用nginx改变前端项目请求的url
  • 【学习笔记】莫比乌斯反演