浅浅谈一谈B树和B+树
目录:
🚀1.B树
🚀2.B+树
索引背后的数据结构是啥呢,是B+树,是为了数据库索引设计的,我们可以先了解B树,再说B+树
1.什么是B树
B树也叫B-树,这里的-不读减,是一个符号
我们已经学过了二叉搜素树,B树其实就是N叉搜素树,二叉搜索树只能在每一个结点放一个key,所以树的高度就很高,而N叉搜索树一个结点可以放多个key,高度大大降低,现在通过画图的形式来进行理解

这就是一个B树,结点的子树越多,那么树的高度就越低,树的高度越低,那么访问硬盘的次数就越少,这有利于提高查询效率
什么是B+树
B+树也是N叉搜索树,其实有点像,但是还是有区别的,继续画图来看

观察这个树,子结点中含有每个结点key的值
那么在查询的时候是以一个范围进行查询,B+树的最后一层的结点可以连接成一个单链表
如下图

就算查的数字在这个树里没有,那么只要通过范围圈出链表的一个范围即可
B+树实现了数据库的索引,那么举个例子,假如要插入一个学生,有id,name,number,address,等,
在B树中就相当于每一个结点的key值中存着这一行数据,比如30,就存着这个学生的所有数据,那么假如就要查30,就查到第一层就可以了,
如果是B+树,那么除了最后一层的结点是存储完整数据的,其他结点是不存该学生的所有信息的,只会存ID,那查询的时候必须查到最后一层才能拿到完整的数据
那么如果没有id ,那就不能使用索引了,因为使用B+树的前提是可比较的key值
在这个结构中,默认是id作为表主键的,
那么如果一个表里有多个索引呢,id是主键索引,那么针对name 也有一个索引
在建造B+树的时候还是按照id为主键建的,在叶子结点中有所有数据
针对name 这个索引,我们需要再创建一个B+树,这个树的叶子结点不保存完整数据,只保存id,在根据name查询的时候,只能查到id,还需要到以id为主键为索引创建的B+树中,再次查询,查到这个树里的叶子结点,才可以查到完整数据
这就叫回表过程,是由mysql自动完成的.
B+树就是mysql组织数据的方式
一张表的结构可能是表结构,也可能是树结构,取决于有没有索引,以及数据库使用的存储引擎
说了这么多,来总结一下
先来说一下B+树的特点
1.一个结点,可以存储N个key,N个key划分N个区间(B树划分的是N+1个区间)
2.每个结点的key的值都会在叶子结点中存在
3.B+树的叶子结点是首尾相连的,类似链表
4.只会在叶子结点上存储完整的行数据,非叶子结点只有key值
现在来说一说B+树的优点
1.一个结点可以存更多的key值,那么树的高度更矮,减少访问硬盘次数
2.所有的查询都会落到叶子结点上(访问的IO次数是一样的,这里的IO次数是指硬盘访问次数)
3.B+树的所有叶子结点构成一个链表,方便范围查询
4.完整的数据都存在叶子节点上,非叶子结点只会存储key,这些非叶子结点可能会存储在
内存中,那么又进一步减少了硬盘访问次数
B树的特点
1.一个结点可以存N个key值,N个key划分N+1个区间
2.每个结点都存储完整的行数据
3.每个结点的key的值在叶子结点中不会出现
4它的叶子结点不存在首尾相连的链表关系
B树的优点
1..一个结点可以存更多的key值,那么树的高度更矮,减少访问硬盘次数
2.所有的查询会落到每一个结点上,查询的速度也很快
今天的讲解就到这里,我们下期见
相关文章:
浅浅谈一谈B树和B+树
目录: 🚀1.B树 🚀2.B树 索引背后的数据结构是啥呢,是B树,是为了数据库索引设计的,我们可以先了解B树,再说B树 1.什么是B树 B树也叫B-树,这里的-不读减,是一个符号 我们已经学过了二叉搜素树,B树其实就是N叉搜素树,二叉搜索树只能在每一个结点放一个…...
Keil新建一个国民32位MCU工程
1.打开Keil软件,点击Project→New uVision→Project 2.将工程保存到自己的工程文件夹,并给项目命名,点击保存 3.选择自己需要开发的芯片,点击OK 4.点击OK 5.出现上图所示,工程已经建好了,点击配置工程。 6.…...
webpack.config.js与package.json文件的配置
path要使用绝对路径,通过每次复制文件位置非常麻烦且容易导致问题 使用node中的 写个包名跟入口名称,其他全部回车 此步完成后,自动生成一个package.json包 licence指的是开源,一般不写 安装文件夹需要的依赖 dirname是node自带…...
超详细Eclipse配置JDK
在此附上Eclipse安装教程 超详细Eclipse安装教程 在此附上JDK1.8安装配置教程 超详细JDK1.8安装与配置 ①打开Eclipse–>点击Window–>点击Preferences ②找到Java–>找到Installed JREs–>点击Add… ③选中Standard VM–>之后点击Next ④点击Directory找…...
成功解决numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares
成功解决numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares 目录 解决问题 解决思路 解决方法—四大原因分析 T1、数据本身问题的解决方法...
Allegro如何设置铜皮避让的优先级操作指导
Allegro如何设置铜皮避让的优先级操作指导 在用Allegro进行PCB设计的时候,时常需要使用动态铜皮进行设计,当两块动态铜皮存在交集的时候,避让就会存在一个优先级,如下图 上方的铜皮避让调了下方的铜皮,上方的铜皮被避让了 如何调整让下方的铜皮避让上方的铜皮,如下图 具…...
(Trie Tree)字典树
(Trie Tree)字典树 场景:在n个字符串中查找某个字符串。 暴力匹配,时间复杂度为O(nm),m为字符串平均长度,效率过低。 字典查找单词"fly",首先查找’f’,然后…...
MQTT的学习之Mosquitto集群搭建
文章钢要: 1、进行双服务器搭建 2、进行多服务器搭建 一、Mosquitto的分布式集群部署 如果需要做并发量很大的时候就需要考虑做集群处理,但是我在查找资料的时候发现并不多,所以整理了一下,搭建简单的Mosquitto集群模式。 首…...
TS面向对象
第二章:面向对象 面向对象简而言之就是程序之中所有的操作都需要通过对象来完成。 举例来说: 操作浏览器要使用window对象操作网页要使用document对象操作控制台要使用console对象 一切操作都要通过对象,也就是所谓的面向对象,…...
Python进阶-----高阶函数map() 简介和使用
目录 简介: 编辑 示例: 示例(1):输出map()函数返回值(迭代器)结果 示例(2):与循环对比 示例(3):字符串转列表 示…...
GPU会变得更便宜吗?GPU 定价更新
在英伟达和AMD发布了一段时间的一致显卡之后,事情在二月份已经降温。没有新的GPU可以谈论,没有特别惊人的交易或任何东西,但仍然值得看看市场现在的表现如何,因为它已经稳定下来,以及我们在未来几个月可以期待什么。过…...
IDEA如何创建一个springboot项目
要想进入springboot的殿堂,你的跨进springboot的门槛,下面就是使用IDEA初始话一个简单的springboot项目。 选择Create New Project 选择Spring Initializer——>选择对应的jdk版本——>Default默认在线构建,需要联网噢 选择自己想写…...
Netty核心功能以及线程模型
目录 Netty核心功能以及线程模型 Netty初探 Netty的使用场景: Netty通讯示例 Netty线程模型 Netty模块组件 Netty核心功能以及线程模型 Netty初探 NIO 的类库和 API 繁杂, 使用麻烦: 需要熟练掌握Selector、 ServerSocketChannel、 So…...
【并发编程二十】协程(coroutine)_协程库
【并发编程二十】协程(coroutine)一、线程的缺点二、协程三、优点四、个人理解五、协程库1、window系统2、unix系统(包括linux的各个版本)2.1、makecontext2.2、swapcontext2.3、setcontext3、第三方库3.1、Boost.Coroutine23.2、…...
c语言入门-5-字符串
c语言入门-5-字符串正文1、字符串怎么用方式一方式二2、字符串的长度深度解析1 字符串的特性2 \0 的含义3 ascii码表下一篇正文 1、字符串怎么用 方式一 // 字符串的标准使用方式,用char类型的数组表示字符串 #include<stdio.h> int main() {char arr[] &…...
[Ansible系列]ansible roles
目录 一. Roles简介 二. Roles基本构成 三. Role使用 3.1 playbook中引用roles 3.2 pre_tasks 和 post_tasks 3.3 role的依赖 四. Ansible Galaxy 一. Roles简介 在Ansible中,role是将playbook分割为多个文件的主要机制。它大大简化了复杂playbook…...
冯诺依曼体系结构与操作系统的理解
✅<1>主页:我的代码爱吃辣 📃<2>知识讲解:操作系统 💬<3>前言:今天来介绍一下冯诺依曼体系结构,和操作系统的理解。 目录 1.冯诺依曼体系结构 冯诺依曼体系的工作原理: 为…...
API接口签名验证
文章目录一、使用背景二、实现方案三、具体流程四、优化五、代码实现六、后续优化一、使用背景 过去对于接口的验证我一般都是直接在登录时为用户发放token,用户在随后的操作中携带了token则允许请求。 但是这样的验证方式存在有一定的问题,如果token被…...
Keettle (pdi-ce) 整库多表迁移(避坑)
使用开源免费 Keettle 工具 1.下载与安装 官网地址:下载 下载9.3.0以上的,6.1、7.1我都尝试过,6.1导致很多莫名其妙问题,7.1数据库可以连接和预览,迁移的时候就会出现事务读问题,最后解决这个问题后&…...
搭建私人《我的世界》服务器,使用Cpolar内网穿透更简单
文章目录1.前言2.本地服务器搭建2.1 设置环境变量2.2 进行《我的世界》服务器端设置2.3 测试和使用3.本地MC服务器的内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置3.3.测试和使用4.结语1.前言 要说去年游戏圈的重磅大瓜,想必网易和暴雪的分家必能上榜。虽然两家大…...
Gemini3.1Pro解决新媒体小编选题难痛点
做新媒体的小编,最怕的不是写,而是“今天写什么”。 选题总是来得很急,热点总是变化很快,账号又要求持续更新,结果就是:内容压力大、时间不够用、框架搭不出来。如果你每天都在追热点、找角度、写标题、搭结…...
Java程序开发第七课
1. Java基础入门 Java特点:跨平台(JVM)、面向对象、健壮性(强类型、垃圾回收)。JDK、JRE、JVM关系: JDK (开发工具包) JRE 开发工具 (javac, java&#x…...
AutoResearchClaw:基于LLM的自动化研究管线,从想法到论文的工程化实践
1. 项目概述:从“聊个想法”到“生成论文”的自动化研究革命如果你是一名科研工作者、研究生,或者任何需要产出高质量学术内容的人,你肯定经历过这样的痛苦:一个绝妙的研究想法在脑海中诞生,但随之而来的是海量的文献调…...
创业团队如何利用Taotoken的Token Plan有效控制AI开发成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 创业团队如何利用Taotoken的Token Plan有效控制AI开发成本 对于资源有限的创业团队和独立开发者而言,在产品原型开发和…...
GPU资源利用率监测与优化实战指南
1. GPU资源利用率监测基础解析在超算中心和AI训练集群中,GPU资源利用率(GPU_UTIL)是衡量计算效率的核心指标。这个看似简单的百分比背后,实际上反映了GPU内部多个执行单元的综合活跃状态。通过NVIDIA的DCGM(Data Cente…...
ISSCC传感器设计启示:从高精度温度测量到低功耗系统优化
1. 从ISSCC看传感器设计的巅峰与启示每年二月的国际固态电路会议,对于像我这样泡在实验室和产线里的硬件工程师来说,就像一场技术界的“春晚”。它不发布概念,不空谈趋势,只展示过去一年里,全球顶尖研究团队在硅片上实…...
Stl.Fusion实际应用案例:从HelloCart到复杂业务系统的演进
Stl.Fusion实际应用案例:从HelloCart到复杂业务系统的演进 【免费下载链接】Stl.Fusion Build real-time apps (Blazor included) with less than 1% of extra code responsible for real-time updates. Host 10-1000x faster APIs relying on transparent and near…...
Perplexity Nature检索实战手册:9类典型查询失败场景+对应Prompt工程模板(含IEEE/ACS/Nature交叉验证结果)
更多请点击: https://intelliparadigm.com 第一章:Perplexity Nature文章检索实战手册导论 Perplexity Nature 是面向科研人员与技术从业者设计的智能学术检索增强工具,它融合了语义理解、引用图谱分析与跨源文献聚合能力,专为高…...
学术生产力革命已来,NotebookLM Agent如何把文献综述时间压缩83%?实测数据首次公开!
更多请点击: https://intelliparadigm.com 第一章:NotebookLM Agent研究辅助 NotebookLM 是 Google 推出的基于用户上传文档进行深度理解与推理的 AI 助手,其内置的 Agent 能力可显著提升学术研究、技术调研与知识整合效率。当启用 Agent 模…...
“找档难、找档慢”困扰工作?档案宝智能检索功能,让档案查询秒响应
目录 档案之痛:效率与风险并存 破局之道:智能检索成关键 写在最后 在日常办公中,你是否遇到过这样的场景:需要调取一份重要合同档案,翻遍整个文件柜却找不到;领导紧急要一份历史数据,手动搜索了…...
