为什么索引要用B+树来实现呢,而不是B树

news2024/10/5 19:11:24
首先,常规的数据库存储引擎,一般都是采用 B 树或者 B+树来实现索引的存储。

B树

因为 B 树是一种多路平衡树,用这种存储结构来存储大量数据,它的整个高度会相比二叉树来说,会矮很多。 而对于数据库来说,所有的数据必然都是存储在磁盘上的,而磁盘 IO 的效率实际上是 很低的,特别是在随机磁盘 IO 的情况下效率更低。 所以树的高度能够决定磁盘 IO 的次数,磁盘 IO 次数越少,对于性能的提升就越大,这 也是为什么采用 B 树作为索引存储结构的原因。 ​​​​

B+树 

但是在 Mysql 的 InnoDB 存储引擎里面,它用了一种增强的 B 树结构,也就是 B+树来作为索引和数据的存储结构。相比较于 B 树结构,B+树做了几个方面的优化。
  • B+树的所有数据都存储在叶子节点,非叶子节点只存储索引。
  • 叶子节点中的数据使用双向链表的方式进行关联。

总结

使用 B+树来实现索引的原因,我认为有几个方面:
  • B+树非叶子节点不存储数据,所以每一层能够存储的索引数量会增加,意味着 B+树在层高相同的情况下存储的数据量要比 B 树要多,使得磁盘 IO 次数更少。
  • 在 Mysql 里面,范围查询是一个比较常用的操作,而 B+树的所有存储在叶子节点的数据使用了双向链表来关联,所以在查询的时候只需查两个节点进行遍历就行,而 B 树需要获取所有节点,所以 B+树在范围查询上效率更高。
  • 在数据检索方面,由于所有的数据都存储在叶子节点,所以 B+树的 IO 次数会更加稳定一些。
  • 因为叶子节点存储所有数据,所以 B+树的全局扫描能力更强一些,因为它只需要扫描叶子节点。但是 B 树需要遍历整个树。
另外,基于 B+树这样一种结构,如果采用自增的整型数据作为主键,还能更好的避免
增加数据的时候,带来叶子节点分裂导致的大量运算的问题, 总的来说,我认为技术方案的选型,更多的是去解决当前场景下的特定问题,并不一定 是说 B+树就是最好的选择,就像 MongoDB 里面采用 B 树结构,本质上来说,其实是 关系型数据库和非关系型数据库的差异。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1117966.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

常见分布整理

概率论 - 常见分布(及其分布表) 常见分布的期望和方差 离散型分布 两点分布 有2种结果,实验只做1次 X~b(1,p)则有 P(X k) pk (1-p)1-k,k 0, 1 数学期望:E(X) p 方差:D(X)p(1-p) 二项分布 P(A) p&#xff0…

网络编程知识点

概念 计算机网络定义 利用通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,以功能完善的网络软件及协议实现资源共享和信息传递的系统。 计算机网络分类 按覆盖范围分: 局域网 作用范围一般为几米到几十公里。 …

【LLM】大模型微调,压缩,量化,部署(还在缓慢更新

前段时间很忙一直没时间follow最近的大模型工作,最近几天闲一点了…这个可能会出现整理不全或者是结果没跑完的情况,我尽量快一点(如果最近没啥事的话),有啥想法可以在评论区d一下我。 LLM排行榜 : https:/…

Labview2023安装教程 (最新最详细保姆级教程)

目录 一 .简介 二.安装步骤 软件:Labview版本:2023语言:简体中文大小:2.73G安装环境:Win11/Win10/Win8/Win7硬件要求:CPU2.6GHz 内存8G(或更高)下载通道①百度网盘丨下载链接: htt…

【趣味随笔】盘点国内外做双足机器人的公司

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

大数据精准营销告诉你如何找到对的人?

如今,朋友圈广告已经“稀松平常”,而用户接收到什么样的商品广告,则基本取决于平日里对微信的使用习惯。无独有偶,淘宝、京东等电商平台在网页中弹出的定向品类广告,也是大数据基于用户对于某一商品的搜索行为。 可见&…

RK3568驱动指南|第七期-设备树-第58章 实例分析:时钟

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

laravel框架介绍(一)

laravel框架是一套简洁,优雅的PHPWeb开发框架。

蓝鹏精准测量系统 助力圆钢负公差轧制

关键字: 钢材下差生产, 负公差轧制, 负公差带肋钢筋, 盘螺负公差率, 成品负公差范围 负公差轧制是指很多产品是按照尺寸公差交货。如果产品公差标或厂标,则可认为产品尺寸精度满足交货要求。 根据国家标准GB/T702-2008《钢材冷拔、冷拉和冷拔锻造用圆钢》的规定&…

免费旋转视频

上一篇:安卓开发测试用视频链接分享了几个免费的视频链接。 平时解bug,测试同事拍的视频,方向可能是倒着的。怎么把视频旋转到正确的方向了?分享一种免费的方法。 下载windows movie maker,下载地址:https://www.top…

JAVA基础-String StringBuffer 和 StringBuilder 类(9)

目录 String创建字符串字符串长度连接字符串创建格式化字符串String 方法 **StringBuilder**StringBuffer String 创建字符串 String s1 "Runoob"; // String 直接创建 String s2 "Runoob"; // String 直接创建 String s3 s…

王道计算机考研 操作系统学习笔记 + 完整思维导图篇章三: 内存管理

目录 内存管理概念 内存的基础知识 什么是内存?有何作用? 补充知识:几个常用的数量单位 指令的工作原理 三种装入方式 绝对装入 可重定位装入 动态重定位 从写程序到程序运行 链接的三种方式 总结 内存管理的概念 内存保护 内存空间的扩充 覆盖技…

创新智能环境带来无线通信与感知的新视角

编者按:2023年是微软亚洲研究院建院25周年。25年来,微软亚洲研究院探索并实践了一种独特且有效的企业研究院的新模式,并以此为基础产出了诸多对微软公司和全球社会都有积极影响的创新成果。一直以来,微软亚洲研究院致力于创造具有…

【java零基础入门到就业】第三天:HelloWorld程序的常见问题和java环境变量的配置

1、java编写程序的常见问题 1.1、 BUG的由来 BUG的由来: "Bug"一词最初是用来形容计算机系统中的硬件故障或软件错误的。据说这个词最早出现在1947年,由于一只飞蛾飞进了哈佛大学的马克Ⅱ计算机中,导致计算机出现故障。后来&#…

仿第八区2023年app免签封装/苹果签名/分发平台系统

描述 封装应用程序直接通过访问数据来操作,直接像网页直接打开一样被访问,这与h5连接访问相同,所以封装应用程序的大部分也在网页端被h5系统封装,从而控制了网页访问手机的硬件参数和手机的权限控制。封装app基本上是以h5页面的格…

(零基础学习)Neo4j+Spring boot 自行定义属性

前置知识 1.Neo4j :属性 节点和关系都可以设置自己的属性。 属性是由Key-Value键值对组成,键名是字符串。属性值是要么是原始值,要么是原始值类型的一个数组。比如String,int和iint[]都是合法的。 注意 null不是一个合法的属性值。 Nulls能…

建筑模板的厚度对价格有多大影响?

建筑模板的厚度对价格有一定的影响,以下是关于建筑模板厚度对价格影响的一些信息: 1. 厚度与价格的关系: - 建筑模板的厚度越大,通常价格也会相应增加。这是因为生产厚度较大的模板需要更多的原材料和工艺成本。 - 厚度较薄的建筑…

Virtualbox Manjaro kde虚拟机系统闪烁

过程 https://blog.csdn.net/weixin_44220976/article/details/133954801 有次更新了Manjaro虚拟机系统之后发生闪烁 • 不操作不闪烁 • 鼠标光标悬浮到桌面的文件、文件夹上,所有文件、文件夹图标消失,变成: 只有悬浮位置有个半透明的框 …

股票价格预测 | Python实现基于LSTM的股票预测模型(keras)

文章目录 效果一览文章概述模型描述源码设计参考资料效果一览 文章概述 今儿举一个案例,围绕 LSTM(Long Short-Term Memory)神经网络的原理,展示如何使用Python和深度学习库Keras构建LSTM模型,以及如何使用这个模型来预测时间序列数据。 以股票价格预测为例,这是LSTM在金…

LABVIEW 安装教程(超详细)

目录 LabVIEW2017(32/64位)下载地址: 一 .简介 二.安装步骤: LabVIEW2017(32/64位)下载地址: 链接: https://pan.baidu.com/s/1eSGB_3ygLNeWpnmGAoSwcQ 密码:gjrk …