打乱读取文件的顺序_磁盘顺序写入

机械硬盘:

1.基本概念

(1)磁盘组合

盘片=2盘面 主轴 磁道 柱面 扇区 间隙

块:对于理解数据库系统特别重要的是磁盘被划分为磁盘块(或就称为块,或者像操作系统称为页),

每块的大小是4-64kB。整个块被从一个称为缓冲区的连续内存区域中移进移出。

块是在磁盘与主存之间所传输数据的逻辑单元,由一个或多个扇区所组成。

41b83cce39c69e91406d3a525c250fd6.png

(2)磁头组合

磁头臂

磁头

磁头组合:一个磁盘的所有磁头在一起叫做磁头组合,它们位于相同的柱面上。

43571c13284be2f9bf80da744c186d3b.png

2.细节

(1)磁道、扇区、读取速度的关系

一个盘面,从内到外有很多磁道,同一个磁道被划分为若干个扇区。

其中扇区之间有间隙隔开,间隙占磁道的10%空间。

同一个盘面上磁道上的数据密度相同,但是外侧磁道长度大于内侧磁道。

每一个扇区上的数据量是相同的(例如512字节),所以外侧磁道扇区数大于内侧磁道。

由于盘面各个磁道角速度相同,但是线速度不同,所以外侧磁道理论上来说读取速度快于内侧磁道。

当然如果内外侧磁道采用不同密度,可以实现内外磁道读取速度相同,但是有两个缺点

①制造工艺更加复杂

②浪费外侧存储空间

当然为了实现特定的目的,需要内外磁道一致的读取速度,也有可能这样做。

(2)磁道、磁头、柱面

①磁头并不会与磁道接触,而是靠地很近,可以感应盘面的磁方向,改变磁方向。

②同一磁盘的所有磁头位于不同的盘面,但是相同的磁道,这些相同的磁道共同构成一个曲面,称为柱面。

(3)磁盘读取时间

①寻道时间,表示磁头在不同磁道之间移动的时间。

②旋转延迟,表示在磁道找到时,中轴带动盘面旋转到合适的扇区开头处。

③传输时间,表示盘面继续转动,实际读取数据的时间。

7200转/min,旋转一周需要8.33ms

寻道约10ms

所以整个磁盘读取时间在一个磁道上是10ms级的。

3.顺序读写和随机读写对于机械硬盘来说为什么性能差异巨大?

顺序读写=读取一个大文件

随机读写=读取多个小文件

顺序读写比随机读写快的原因

①顺序读写,主要时间花费在了传输时间,而这个时间两种读写可以认为是一样的。

随机读写,需要多次寻道和旋转延迟。而这个时间可能是传输时间的许多倍。

②顺序读写,磁盘会预读,预读即在读取的起始地址连续读取多个页面

(现在不需要的页面也读取了,这样以后用时就不用再读取,当一个页面用到时,大多数情况下,它周围的页面也会被用到)

而随机读写,因为数据没有在一起,将预读浪费掉了。

③另一个原因是文件系统的overhead。

读写一个文件之前,得一层层目录找到这个文件,以及做一堆属性、权限之类的检查。

写新文件时还要加上寻找磁盘可用空间的耗时。

对于小文件,这些时间消耗的占比就非常大了。

---------------------

作者:C小虫

来源:CSDN

原文:https://blog.csdn.net/u010087886/article/details/54405934/

版权声明:本文为博主原创文章,转载请附上博文链接!

固态硬盘顺序比随机快的原因:

理论上来说,它不应该存在明显的随机写与顺序写的速度差异,因为它就是一块支持随机寻址的存储芯片,没有寻道和旋转盘片的开销,但是随机写实际上还是比顺序写要慢。这是由于其存储介质闪存的一些特性导致的,简单来说:
1、闪存不支持in-place update:你更新一个数据,不可以直接在原有数据上改,而要写到新的空白的地方,并把原有数据标记为失效。
2、标记失效的数据不是浪费空间么?可以将其清除。但是闪存上清除操作的最小单位是一个大块,大约128K-256K的大小。一次清除会影响到还未标记失效的有用的数据,要先把它们移走。
这种感觉就如同你在网格纸上写一篇文章,一格一格往下写,只能写在空白的格子里;但是你若要清除之前写的内容,只能整行擦除。非常难受而且浪费空间对吧?所以固态硬盘里实现了垃圾回收算法,用来更好地利用存储空间,同时减少数据迁移,保护闪存寿命。
那么随机写显然比顺序写带来更大的碎片化,从而带来更多的垃圾回收开销、数据迁移开销,自然就比顺序写要慢了。
作者:Qilan Yuan
链接:https://www.zhihu.com/question/26028619/answer/32932317
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值