首页 > 数据库 >MySQL中B-Tree和B+Tree创建过程

MySQL中B-Tree和B+Tree创建过程

时间:2022-12-30 12:33:17浏览次数:65  
标签:创建 哔哩 Tree 插入 key MySQL 节点 指针

1. B-Tree

以一颗最大度数为5(5阶)的B-tree为例,每个节点最多存储4个key,5个指针。意味着:在一个有n个key的节点中,有n+1个指针,原理如下图:

现在,依次存入如下数据:200、100、400、300、500、450、600、550。

  • 前四个数据存入后按大小排好后及指针指向规律:

  • 插入下一个数据500时,该节点已满,于是乎中间key向上裂变:

  • 继续插入,当到550时:

  • 此时,需插入的结点已满,中间key继续向上裂变:

  • 完成!!

这就是B-Tree实现原理。

视频学习资料:11. 进阶-索引-结构-Btree_哔哩哔哩_bilibili

动态图形演示网站:B-Tree Visualization (usfca.edu)

注意:动态图形演示网站需要自己插入数据创建树。

2. B+Tree

B+Tree是B-Tree的优化,所有的数据都存放在叶子节点中,非叶子节点只起到索引作用。同时,叶子节点形成一个单向链表

举例:

  • 建立一个5阶树,依次插入以下数据:200、100、400、300、500、450、600、550。

  • 插入第五个数据时,中间key向上裂变,但是该键在叶子中依然存在,并且,叶子形成单链表:

  • 所有数据插完后如下:

MySQL索引数据结构对经典的B+tree进行了优化。在原有基础上,增加一个指向相邻叶子结点的链表指针,形成带有顺序指针的B+Tree,提高区间访问的性能。对上一组数据建树结果如下:

这就是B+Tree实现原理。

视频学习资料:12. 进阶-索引-结构-B+tree_哔哩哔哩_bilibili

动态图形演示网站:B+ Tree Visualization (usfca.edu)

这是一篇学习笔记,来源于上面的视频学习资料,要是有没有讲清楚的地方小伙伴们可以看一下视频,视频中老师讲得非常清楚,共勉!

标签:创建,哔哩,Tree,插入,key,MySQL,节点,指针
From: https://www.cnblogs.com/ljdxxxtd/p/17014628.html

相关文章

  • MySQL-(InnoDB)事务和锁
    在事务并行处理背景下,不同的事务之间因数据共享的状态变化,存在着某种依赖/隔离影响。即事务隔离级别。事务隔离级别,官网的解释在这里。InnoDB提供SQL:1992标准描述的所......
  • MySQL复制常见报错处理【转】
    在日常工作中,笔者遇到过很多MySQL主从复制报错的情况,这篇文章就来聊一聊常见的一些复制报错,以及处理办法。1serverid重复这个在我们刚接触主从复制的时候可能会犯的错......
  • C#/VB.NET 创建PDF/UA文件
    1.什么是PDF/UA文件PDF/UA,即UniversallyAccessiblePDF,该格式的PDF文件是于2012年8月以ISO标准14289-1发布的、具有普遍可访问的PDF文档标准。为带标签的PDF文档(TaggedPDF......
  • MySQL 复制延迟怎么处理【转】
    我们在工作过程中,可能多多少少会遇到主从延迟的情况,这一节内容我们就来聊聊什么情况可能出现主从延迟,怎样判断延迟,存在延迟怎么处理。根据笔者以往的经验,导致复制延迟可能......
  • mysql记录查询的sql
    showprocesslist;二、mysql查看已经执行的历史sql语句(方法:开启日志模式)开启日志SETGLOBALlog_output='TABLE';SETGLOBALgeneral_log='ON';查看是否开启showvaria......
  • 5-4 项目创建 + 模板下载
    1脚手架初始化项目模板开发1.1手动创建项目模板mkdirzmoon-cli-dev-templatecd./zmoon-cli-dev-templatenpminit-ymkdirzmoon-cli-dev-template-vue3cd./zmo......
  • 5-1 脚手架创建项目流程架构设计
    1一周导读1.1标题完成imooc-cli脚手架创建项目流程开发1.2将收获什么命令行交互方法服务端框架eggjs的应用和API开发方法eggjs集成云mongodb1.3主......
  • 5-2 项目创建前准备阶段
    1项目创建前准备阶段exec(){try{//1.准备阶段this.prepare()//2.下载模板//3.安装模板}catch(e){log.error(e.message)}}......
  • MySQL 5.7 版本的安装及简单使用(图文教程)
    MySQL5.7版本的安装使用详细教程写得还是比较详细,甚至有些繁琐,有很多步骤在其他的教程文档里都是省略掉的,但是我还是要写出来,因为我当时走了很多弯路,我希望你们能够避免我......
  • 手把手的SpringBoot教程,SpringBoot创建web项目(三)
    这节课,我们来学习一下SpringBoot的环境配置,在SpringBoot中,所有的配置都写在application.properties中:我们启动项目,默认端口是8080,我们现在给他配置一个8088:server.port=808......