为什么 MySQL 选择 B+树作为存储引擎索引结构( 四 )
旋转时间:7200 转/min:半周 4ms
传输时间:50M/s , 约 0.3ms
2.磁盘随机 IO ? 磁盘顺序 IO ≈ 内存随机 IO ? 内存顺序 IO
3.机械磁盘和固态硬盘构成:
机械硬盘:
电磁存储 , 通过电磁信号转变来控制读写 , 磁头机械臂移动
固态硬盘:
半导体存储 , 用固态电子存储芯片阵列、由控制单元和存储单元组成 , 内部由 闪存颗粒组成 。 速度较
1.5 总结
本节主要交代了 4 个大的背景 , 下面再和大家回顾一下 。
1. 处理读多写少的场景
2. 关系型数据库按照行组织
3. 存储千万级量级数据
4. 采用性价比高的存储
最后我们结合实际的场景选择以
硬盘
这种介质来存储数据 , 同时在存储引擎层 , 数据按照抽象层面的 key-value 来组织读取和写入 。 了解了大的背景 , 下面得了解我们的目标是啥了 。 没有目标就没有方向 , 搞清楚目标对我们至关重要 。
在第一节中 , 我们介绍了四大基本背景 。 并分析出来了我们最终需要采取硬盘来存储数据 。 在本节中 , 我们将重点关注我们的要
达到的目标
, 只有明确了目标 , 我们才能更好的进行自顶向下分解任务并解决问题 。
在介绍我们的目标前 , 我们先来看看我们在
基于磁盘存储数据的条件下 , 一次常规的用户请求大概是怎样的?
2.1 常规的一层用户请求响应过程
我们都知道 , 我们的数据存储在硬盘上 , 因此当用户的请求(读/写)进来后 , 首先会到操作系统管理的内存中 , 在内存中进行一些逻辑处理 , 然后 CPU 会发送指令从硬盘读取数据到内存中 , 最后就会响应上层用户(读:读取的数据、写:写数据是否成功等) 。
上面描述的一个大概的流程 。 从中我们可以看到整个过程经历三个阶段:
请求过程:
用户请求->内存->硬盘
响应过程:
响应用户
理清楚了整个用户的请求响应流程后 , 我们就来看看 , 我们最终的目标是啥呢?
2.2 目标
其实互联网的应用 , 有个潜移默化的潜规则 , 那就是
高效、快速
, 对存储引擎而言也不例外 , 我们的目标就是要在上述背景下进行
快速、高效的数据读写请求
。
问题来了!
快速、高效
这都属于定性分析的一类描述用语 , 怎么样算快速呢?怎么样又算高效呢?怎么定量分析这个需求呢?
到这儿 , 大伙儿可以想想如果这个需求是你来负责的 , 那么你会从哪些角度出发来思考这个问题呢?
这个问题应该难不倒聪明的你 , 还记得数据结构与算法里有一个指标吗!
时间复杂度
, 这就是一个很重要的核心指标呀 , 衡量数据结构或者算法处理效率的一个关键指标 。 我们想想 , 我们的数据最终要存储 , 怎么存储 , 怎么组织 , 这不就涉及到选择哪种数据结构了吗!
- 三星|流畅用三年,两千价位机型,为什么说这款最值得买?
- 亚马孙热带雨林|“地球之肺”亚马逊雨林,为什么是人类禁区?到底有多恐怖?
- 数字货币|为什么都抢着搞元宇宙?数字货币未来或会遍及全球,改变世界格局
- 行星|为什么NASA要重返月球?答案会是这样的?
- 霍金|宇宙大爆炸之前什么都没有?霍金为什么这么说?答案很奇妙
- 飞利浦·斯塔克|MySQL统计总数就用count,别花里胡哨的《死磕MySQL系列 十》
- 癌细胞|为什么自然界中的动物不怕生肉的寄生虫,反而怕受伤呢?
- ai|为什么健身爱好者都选择FITURE魔镜?各款智能健身镜对比横评!
- 火山|水火不容,那么海底的火山爆发,海水为什么浇不熄灭呢?
- 太空|坐火箭去太空旅行要7500万,为什么这么贵?看完就明白了!