随机读写与顺序读写的深入理解

分类:数据恢复常见问题|最后更新:2018年11月6日

关于磁盘的读写性能曾经一直是我头疼的地方,涉及研发或者测试时不清楚过程导致结果不尽人意。一起认识下关于磁盘的读写原理和顺序读写,随机读写。

首先磁盘是如何存储数据的?

信息存储在硬盘里,把它拆开也看不见里面有任何东西,只有些盘片。假设,你用显微镜把盘片放大,会看见盘片表面凹凸不平,凸起的地方被磁化,凹的地方是没有被磁化;凸起的地方代表数字1(磁化为1),凹的地方代表数字0。因此硬盘可以以二进制来存储表示文字、图片等信息。

机械盘和固态盘的区别:

机械盘:数据是存储的扇区的,读写是依靠磁头的摆动寻址的。顺序读写主要时间花费在了传输时间,随机读写需要多次寻道和旋转延迟。

固态盘:是由控制单元和固态存储单元(DRAM或FLASH芯片)组成,存储单元负责存储数据,控制单元负责读取、写入数据。

由于固态硬盘没有普通硬盘的机械结构,也不存在机械硬盘的寻道问题。

(硬盘、U盘、光盘、SD卡等存储设备的数据发生了丢失,使用

顺序读写和随机读写对比:

随机读写是相对顺序读写而言的,所谓随机读写,是指可以在任何时候将存取文件的指针指向文件内容的任何位置。一般情况下SAS机械硬盘主要是看顺序读写性能,SSD固态盘主要看随机读写性能。

文件的操作方式:

顺序读写:文件指针只能从头移动到尾。

随机读写:文件指针可以随意移动,根据需要。

随机示例:

假设存在一个文件尺寸为1024个字节的文件,如果按照顺序存取原则的话,我们只能采用类似于FileStream.read()或者FileReader.readLine()的方式来一段一段,或者一行一行地读取。

RandomAccessFile类的核心价值在于RandomAccessFile.seek()方法,通过这个方法,可以任意地指定当前存取文件的指针位置。

随时调用RandomAccessFile类的getFilePionter()方法,获取文件指针当前距离文件起始位置的偏移量。

小结:在日常项目开发中在设计存储时,一定要考虑顺序和随机,优化其性能达到最高。例如,当前大多数数据库使用的都是传统的机械磁盘,因此,整个系统设计要尽可能顺序I/O,避免昂贵的寻道时间和旋转延迟的开销.

(迷你兔数据恢复minitool具有“五大功能模块,恢复效率高,安全性有保障。)

MySQL顺序读写和随机读写磁盘_随机读写与顺序读写的深入理解相关推荐

  1. python随机森林库_随机森林算法入门(python)

    目录 1 什么是随机森林 1.1 集成学习 1.2 随机决策树 1.3 随机森林 1.4 投票 2 为什么要用它 3 使用方法 3.1 变量选择 3.2 分类 3.3 回归 4 一个简单的Python ...

  2. c++数据结构中 顺序队列的队首队尾_数据结构 3.3 顺序队

    一些废话 光有理论是远远不够的,只有自己亲自敲过代码,做过编程题才能说自己学过数据结构.但被PTA的ds习题折磨了几天之后,我领悟到一个道理: 学习理论时可以用C语言造轮子深入理解. 上机做题时使用C ...

  3. 随机地址生成器_随机连接神经网络性能超过人工设计!何恺明等人发布新研究...

    选自arxiv 作者:Saining Xie.Alexander Kirillov.Ross Girshick.Kaiming He 机器之心编译 随机连接的神经网络性能居然比人工设计的网络(ResN ...

  4. matlab 随机森林算法_随机森林算法

    随机森林是一种灵活,易于使用的机器学习算法,即使没有超参数调整,也能在大多数情况下产生出色的结果.它也是最常用的算法之一,因为它简单,并且可以用于分类和回归任务.在这篇文章中,您将学习随机森林算法如何 ...

  5. gbdt 算法比随机森林容易_随机森林与GBDT

    Bagging策略 1.总样本数量是n个,从样本中重采样(有放回的)选出n个样本 ,会有约33.2%的样本不会被抽到 2.在所有属性上对这n个样本建立分类器(比如决策树,svm,lr) 3.重复步骤1 ...

  6. java map 随机取值_随机获取一个集合(List, Set)中的元素,随机获取一个Map中的key或value...

    利用Java提供的Random类.从List或Set中随机取出一个元素,从Map中随机获取一个key或value. 因为Set没有提供get(int index)方法,仅仅能先获取一个随机数后.利用一 ...

  7. 计算机随机数字excel,excel随机生成数字_随机不随意

    前几天,我正在校园里漫步.远远地,一名学生向我打招呼.我朝他笑了笑,脑子里却怎么也搜索不到他的名字.自从高二年级考完信息技术学业水平测试,信息技术课就结束了,好多学生的名字也渐渐淡忘了. 直到学生走到 ...

  8. java生成随机十位数_随机10位字符串生成

    小于11位的小写字母以及数字随机码生成方法如下 方法一 奇妙的写法 Math.random().toString(36) //0.apnsudpxq0 //10位数字符串 Math.random(). ...

  9. java中的随机生成算法_随机生成算法的java代码太复杂了

    public static Integer[] generateRandomArray(int n, int rangeL, int rangeR) { assert rangeL <= ran ...

最新文章

  1. 一个软件公司需要多少前端_制作一个小程序商城需要多少钱?开发小程序公司哪家强?...
  2. 关于windows内存泄露思考
  3. 科普:TLS、SSL、HTTPS以及证书(转)
  4. C++ 析构函数与内存池
  5. visual-studio – 使用TFS 2010防止在Visual Studio 2012上签入pdb文件
  6. windows mysql导入sql文件
  7. 【入门篇】黑盒测试基础
  8. jQuery 效果函数
  9. 文献阅读 | 利用体细胞的mtDNA的突变追踪细胞的分化命运
  10. Linux必学的60个命令(文字整理版)
  11. 基于java的oa协同办公系统_基于JAVA的OA系统的制作毕业设计论文
  12. goahead(嵌入式) webservice (3.3.0)运行goforms
  13. 12海里、24海里、200海里的意义及名称
  14. 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--PS2解码(九)
  15. 软考中级——计算机网络与信息安全基础概要
  16. 算法:初探12306售票算法。
  17. 七、HTMLTestRunner生成测试报告
  18. ios文件扩展名_安卓JY Share | 还在为担心文件上传成为 base.apk,这个应用帮你解决...
  19. 互联网医院智慧医院系统
  20. 【瑞吉外卖】day08:短信发送、手机验证码登录

热门文章

  1. react项目中引入的组件在src外从而报错
  2. pyhton——爬小说网站(顶点最强国防生)
  3. Ubuntu中禁用触摸板
  4. c语言共阴极数码管数字6,用51单片机C语言编写程序实现6位共阴极数码管循环显示0123456789ABCDEF,六个数码管是连续不同的六个数?...
  5. 你所不知道的测试经验分享之安卓UI控件定位!
  6. [翻译]Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
  7. 110.Balanced Binary Tree
  8. 详解:化工厂人员定位方案与双重预防机制建设
  9. 自己写的一点福利代码(四)
  10. 《Java程序设计》实验指导——项目3 类与对象