为什么 MySQL 选择 B+树作为存储引擎索引结构( 三 )


1.易失性存储:
典型代表内存
2.非易失性存储:
典型代表硬盘(磁盘) , 尤其是早期的机械硬盘
关于二者的详细对比 , 大家可以参考下图:
为什么 MySQL 选择 B+树作为存储引擎索引结构
本文插图
首先 ,
通过上图的对比 , 我们大致可以确定了 , 我们期望的存储介质就是硬盘(主要是机械硬盘)了 。 因为它很符合我们所寻找的几个特点 。 但我们都知道硬盘虽然符合我们的要求 , 但硬盘有着它先天结构的限制 。
访问磁盘的速度要比访问内存慢的多 。
到这儿也就不得不提一下 , 关于机械硬盘它的构成了 。 关于机械硬盘的简单介绍 , 我们在下面的扩展内容中进行简要介绍 , 大家感兴趣可以进行阅读 , 已经掌握的读者可以直接跳过这部分虚线框中的内容 。
扩展内容
为什么 MySQL 选择 B+树作为存储引擎索引结构
本文插图
上图关于磁盘介绍的图片摘自本篇文章 。
普通的机械硬盘读写数据主要是通过移动磁头到对应的磁道 , 然后再旋转磁头到对应的扇区 。 最后进行移动磁头进行读写数据 。
简单说:一次硬盘数据读写主要包括三大部分耗时:
寻道时间

旋转时间

传输时间
。 而在这其中
寻道时间
主要占大头 , 主要是因为磁头的移动主要是马达通过驱动磁臂近而移动磁头 , 这个运动属于机械运动 , 所以速度相对较慢 。
对磁盘而言 , 磁盘的访问肯定是要比内存慢的 。 但是在磁盘访问时 , 又有两种访问方式:
1. 随机 IO
2. 顺序 IO
顺序 IO 的访问速度要远远快于随机 IO , 其根本原因是:顺序 IO 主要减少了磁头的移动频率 , 也就是减少了
寻道时间
。 所以它的性能要比随机 IO 要快很多 。
由于篇幅有限 , 关于硬盘的介绍我们就不过多展开了 , 不然就跑题了 。 有了上述的知识 , 我们就足以开展我们后续的内容了 。 关于硬盘的详细内容介绍 , 大家可以自行找其他资料学习或者点击本篇文章进行阅读 。 下面我们继续介绍我们的主要内容 。
其次 ,
我们既然选择了硬盘做存储媒介 ,
那就必须想办法克服这个问题
。 下面这张图详细描述了
内存访问速度和磁盘访问速度
的对比结果 。
为什么 MySQL 选择 B+树作为存储引擎索引结构
本文插图
下面我们简单总结下 , 抛出我们在这块得出的
结论

结论1可以参考扩展内容详细了解 。
1.磁盘访问时间:寻道时间+旋转时间+传输时间:
寻道时间:8ms~12ms