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

磁盘存储、B树、B+树

文章目录

  • 一、磁盘结构分析与数据存储原理
  • 二、B树和B+树
    • 1.B树的定义
    • 2.B树与B+树的区别

一、磁盘结构分析与数据存储原理

我们知道常见的数据结构有链表,树,图等等,而树又可以分为二叉树,多叉树等等。对于链表来说,它可以找下一个结点在哪,而树不但可以找下一个数据结点在哪,树可以找两个,找三个,找多个(几叉),一个结点有几叉就可以找几个结点,通过一个结点可以找n个结点,这就是一个树形结构。

那么为什么要有多叉树呢?在学术上,通常解释为:树是为了降层高。那为什么要降层高呢?

对于多叉树来说,一个结点内,可能有多个key,所以多叉树是不能提高查询效率的(与二叉树相比)。但是它有一个好处,“一个结点内,可能有多个key”,这也就意味着多叉树的结点数量比较少,既然结点数量少,那么查找结点的次数就少。

注意,多叉树的作用:降低层高,使得结点数量变少,那么查找结点的次数就变少了

我们知道cpu能直接存取内存,而不能直接存取磁盘。计算机给磁盘发送一个存取指令,磁盘通过旋转找到对应的盘面磁道扇区再读出来放入内存。磁盘为什么慢,就是因为磁盘寻址速度慢。每寻址一次,磁盘就要转一次。内存一次存取大约是10ns,磁盘一次存取是100ms。对于在内存中来说,多叉树的作用不大,但是对于磁盘来说,如果一个结点存了10个key,就可以少寻址很多次。所以多叉树的作用就是使得层高降低为了减少寻址次数。这也就是为什么磁盘的存储适合用b树或b+树的原因。

多叉树 -> 降低层高 -> 减少结点数量 -> 减少磁盘IO -> 提升性能

二、B树和B+树

1.B树的定义

一颗M阶B树T,满足以下条件

  1. 每个结点至多拥有M课子树
  2. 根结点至少拥有两颗子树
  3. 除了根结点以外,其余每个分支结点至少拥有M/2课子树
  4. 所有的叶结点都在同一层上
  5. 有k棵子树的分支结点则存在k-1个关键字,关键字按照递增顺序进行排序
  6. 关键字数量满足 ceil( M/2 ) - 1 <= n <= M-1

2.B树与B+树的区别

在实际磁盘存储中往往选用的都是b+树

⭐b+树相较于b树的优点

  1. 关键字不保存数据,只用来索引,所有数据都保存在叶子结点(b树是每个关键字都保存数据)
  2. b+树的叶子结点是带有指针的,且叶结点本身按关键字从小到大顺序连接(适用于范围查询)
  3. b+树的中间结点不保存数据,所以磁盘页能容纳更多结点元素,更“矮胖”


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

相关文章:

  • 路由器的工作机制
  • helm 测试升级与回滚
  • 重学SpringBoot3-集成Redis(六)之消息队列
  • 解决 OpenCloudOS 中 yum 安装 yum-utils 命令报错的问题
  • RK3568笔记六十四:SG90驱动测试
  • Linux复习--Linux服务管理类(SSH服务、DHCP+FTP、DNS服务、Apache服务、Nginx服务、HTTP状态码)
  • D - Connect the Dots Codeforces Round 976 (Div. 2)
  • 基于SSM的高校勤工助学管理系统的设计与实现(源码+定制+参考文档)
  • 电影选票选座系统|影院购票|电影院订票选座小程序|基于微信小程序的电影院购票系统设计与实现(源码+数据库+文档)
  • 并查集的模拟实现
  • xtu oj 神经网络
  • linux下cmake编译64位,32位,ARM,ARM64程序
  • 论文阅读笔记-LogME: Practical Assessment of Pre-trained Models for Transfer Learning
  • 微服务seata解析部署使用全流程
  • 国庆期间的问题,如何在老家访问杭州办公室的网络呢
  • Hotspot是什么?
  • Luminar财务造假风波:激光雷达龙头的困境与挑战
  • 在VMware WorkStation上安装飞牛OS(NAS系统)
  • 苍穹外卖学习笔记(十五)
  • rust log选型