关于B树的一点理解

本文介绍了B树的背景,详细解释了磁盘存取的原理和时间复杂性,强调了B树作为平衡查找树在减少磁盘IO次数以提升查询性能方面的优势。B树的定义、搜索过程以及缺点也被阐述,指出B树在范围查询和性能稳定性上的不足,进而引出B+树的出现原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,需要强调的是B树对应的英文名字就是B-Tree(名字中的-其实是连字符),并没有一种B减树。B树种的英文字母B是Balance的意思。也就是说B树是自平衡树

背景

目前有许多不同的技术可用来在计算机系统中提供存储能力。例如,硅制的存储芯片,速度比较快,但是却造价相对昂贵,且失电后存储内容丢失;磁存储技术造价相对比较低,失电后不会丢失存储内容,但是却速度慢。为了在容量,速度及成本三者上取得一个平衡,目前大多数的计算机都采用了多级存储体系。即使用硅制的存储芯片作为主存,使用磁存储技术作为辅存,且通常辅存比主存的容量大至少两个数量级。

下图是一个典型的磁盘驱动器。
磁盘驱动器
了解磁盘驱动器大概的造型后,让我们来看看磁盘驱动器的结构。
磁盘驱动器结构
从磁盘驱动器结构图中可以看出,驱动器包含若干盘片,他们以固定速度共用的主轴旋转。每个盘的表面覆盖一层可磁化的物质。每个磁盘通过磁臂末端的磁头来读写磁臂是物理连接在一起的,它们可以将磁头移近或者远离主轴。当一个给定的磁头静止时,由它底下经过的盘表面成为一个磁道。读/写磁头始终是垂直对齐的,因此它们下面的一组磁道被同时存取,这些被同时存取的磁道称作柱面

因为磁盘驱动器有机械移动的部分:盘旋转和磁臂移动。因此相对主存来说磁盘的速度很慢。目前商用的磁盘以每分钟5400~15000转(RPM,Round Per Minute)的速度旋转,而7200RPM是最常见的。虽然7200RPM看起来很快,但是旋转一周要花8.3毫秒,比硅存储的常见存取时间100纳秒几乎大5个数量级。换句话说,如果要等候一个磁盘转完完整的一圈,让一个特定的数据项到达读/写磁头下方,我们在这个时间可以存取主存几乎100000次!平均来讲只需要等候半圈,但是硅存储体与磁盘的存取时间之间的差异仍然是巨大的。而且移动磁臂也需要花费一些时间。另外通常信息会被分割成一些在柱面内连续出现的大小相等的位的页面,每次磁盘读写的都是一个或者多个完整的页面。

磁盘上数据必须用一个三维地址唯一标示:柱面号、盘面号、块号(磁道上的盘块)
读/写磁盘上某一指定数据需要下面3个步骤:
1.首先根据柱面号移动磁臂使磁头移动到所需要的柱面上,这一过程被称为定位或者查找。
2.根据盘面号来确定指定盘面上的磁道。
3.盘面确定之后,盘片开始旋转,讲指定的块号的磁道段移动至磁头下。

经过上面三个步骤,指定数据的存储位置就被找到。这时就可以开始读/写操作了。
访问某一具体信息,由3部分时间组成:

  • 查找时间:完成上述步骤1所需要的时间,这部分时间代价最高,最大可达到0.1是左右。
  • 等待时间:完成上述步骤3所需要的时间。7200RPM通常旋转一圈大约8.33毫秒
  • 传输时间:数据通过系统总线传送到内存的时间,一般船速
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值