精华内容
下载资源
问答
  • 关于磁盘随机读写与顺序读写

    万次阅读 2019-05-04 10:29:13
    今天看kafka官网的文档,关于性能方面的讨论时,又提到了磁盘随机读写顺序读写性能方面的事,借此机会整理一下。 现在的大数据工具一般都会设计为append only的形式,既文件只能追加写,其它的删、改都只能建立在...

    今天看kafka官网的文档,关于性能方面的讨论时,又提到了磁盘随机读写和顺序读写性能方面的事,借此机会整理一下。

    现在的大数据工具一般都会设计为append only的形式,既文件只能追加写,其它的删、改都只能建立在append only的基础上,如删一条数据只能append一个记录,把要删的数据标记为删除,而不能从磁盘中删除原数据,这样的机制主要就是尽可能保证磁盘是顺序读写。这里就有两个问题,一个是为什么说是尽可能,另一个是为什么要顺序读写。

    一:为什么说是尽可能

    这方面我自己也不是太清楚操作系统底层的磁盘读写原理,根据查的资料和自己对操作系统的理解,大概归纳如下:在操作系统看来两个逻辑上连续的sector未必在物理上就是连续的,因为读写都是物理地址映射出的基于虚拟地址,而现代操作系统基本都使用main memory为需要写的data做cache,使用append only的方法,能够尽可能的使得要写的内容在物理上连续,从而读的时候也是一个顺序读

    二:顺序读写和随机读写性能差距有多大:

    我们知道,磁盘读写最慢的地方在于寻道,根据kafka官网写的资料是,寻道时间大概10ms,寻道之后磁头顺序读取信息的速度是很快的,根据kafka官网的说法,6个7200转的磁盘组成raid5,顺序写的速度能达到(600MB/S),而随机读写速度仅为100kb/s,如下图所示,顺序读有时候比内存的随机读取还要快。而从stackoverflow上搜索得到的答案是,单块磁盘每30ms能写1MB数据,写100MB数据大概需要3秒钟。

     

    不过我自己使用多进程并发写ES的时候,4块磁盘组成的raid5,极限速度能达到60-70MB/S,读取速度也大致是60-70MB/S,这方面存有疑问,不知道为什么达不到理论的速度,是不是ES的文件写入还不是完全顺序读写。

     

    展开全文
  • 磁盘顺序读写与随机读写详解

    千次阅读 2020-07-18 19:52:53
    磁盘顺序读写与随机读写详解1.磁盘的基本概念2.磁盘的读写方式3.磁盘读取时间4.顺序读写与随机读写5 参考链接 1.磁盘的基本概念  盘片与盘面 : 一块硬盘一般有多块盘片,盘片分为上下两面,其中有效面称为盘面(一般...

    1.磁盘的基本概念

     盘片与盘面 : 一块硬盘一般有多块盘片,盘片分为上下两面,其中有效面称为盘面(一般上下都有效),盘片数一般与磁头数相等.也就是说:磁头数 = 盘面数 = 盘片数*2
     磁头 : 磁头切换磁道读写数据时通过机械设备实现的,速度较慢;而磁头切换盘面读写数据是通过电子设备实现的,速度较快,因此磁头一般是先读写完柱面后才开始寻道的(不用切换磁道),这样磁盘读写效率更快.
    在这里插入图片描述
     磁道 : 磁道就是以中间轴为圆心的圆环,盘面有多个磁道,磁道之间有间隙,磁道也就是磁盘存储数据的介质.磁道上布有一层磁介质,通过磁头可以使磁介质的极性转换为操作系统的数据信号(即磁盘的读,磁盘写刚好相反)
     柱面 : 磁盘中不同盘面中半径相同的磁道组成的. 也就是说 柱面数 = 某个盘面的磁道数
     扇区 : 单个磁道就是多个弧形扇区组成的,当然某个盘面上的每个磁道拥有的扇区数量是相等.扇区是硬盘/磁盘的最小存储单元.但不是文件系统的最小存储单元(文件系统的最小存储单元是block,可以人为设定).一般扇区大小为512bytes(最新的硬盘好像可以有4K了)
    在这里插入图片描述

    2.磁盘的读写方式

     文件系统不是一个扇区,一个扇区的来读数据,太慢了,所有有了block(块)的概念,它是一个块一个块的读取的.block才是文件存取的最小单位.
     一个block块中扇区的个数依文件系统而不同,如一个block有8个扇区,那一个block块的大小为4K.

    3.磁盘读取时间

    寻道时间 : 表示磁头在不同磁道之间移动的时间
    旋转延迟 : 表示在磁道找道时,中轴带动盘面旋转到合适的扇区开头处
    传输时间 : 表示盘面继续转动,实际读取数据的时间
    7200转/min,旋转一周需要8.33ms
    寻道约10ms

    磁头不动,盘动的过程
    磁盘的转速;5400转,7200转,10000转,15000转 每分钟

    4.顺序读写与随机读写

     只有顺序写才能保证顺序读
     当读取第一个block时,要经历寻道,旋转延迟,传输三个步骤才能读取完这个block的数据.而对于下一个block,如果它在磁盘的某个位置,访问它会同样经历寻道,旋转,延时,传输才能读取完这个block的数据, 我们把这种方式的IO叫做随机IO.但是如果这个block的起始扇区刚好在我刚才访问的block的后面,磁头就能立刻遇到.不需等待,直接传输.这种IO就叫顺序IO.

    5 参考链接

    磁盘基本知识与读写原理:
    https://blog.csdn.net/rodbate/article/details/50371855
    理解IO:随机和顺序
    https://blog.csdn.net/BaiWfg2/article/details/52885287

    展开全文
  • 事实上,磁盘读写的快慢取决于你怎么使用它了(顺序读写随机读写)。--(零拷贝)技术可以减少数据拷贝和共享总线操作的次数,消除通信数据在存储器之间不必要的中间拷贝过程,有效地提高通信效率,是设计高速接口...

    Kafka的消息是保存或缓存在磁盘上的,你可能会认为:在磁盘上读写数据是会降低性能的,因为-!-寻址-!-会比较消耗时间。事实上,磁盘读写的快慢取决于你怎么使用它了(顺序读写、随机读写)。--(零拷贝)技术可以减少数据拷贝和共享总线操作的次数,消除通信数据在存储器之间不必要的中间拷贝过程,有效地提高通信效率,是设计高速接口通道、实现高速服务器和路由器的关键技术之一
    Zero Copy中直接从内核空间(readBuffer--系统调用)到内核空间(SocketBuffer--系统调用),然后发送网卡(DMA --内存到内存)。

    Kafka的设计目标是高吞吐量,它比其它消息系统快的原因体现在以下几方面:

    1、Kafka操作的是序列文件I / O(序列文件的特征是按顺序写,按顺序读),为保证顺序,Kafka强制点对点的按顺序传递消息,这意味着,一个consumer在消息流(或分区)中只有一个位置。

    2、Kafka不保存消息的状态,即消息是否被“消费”。一般的消息系统需要保存消息的状态,并且还需要以随机访问的形式更新消息的状态。而Kafka 的做法是保存Consumer在Topic分区中的位置offset,在offset之前的消息是已被“消费”的,在offset之后则为未“消费”的,并且offset是可以任意移动的,这样就消除了大部分的随机IO。

    3、Kafka支持点对点的批量消息传递。

    4、Kafka的消息存储在OS pagecache(页缓存,page cache的大小为一页,通常为4K,在linux读写文件时,它用于缓存文件的逻辑内容,从而加快对磁盘上映像和数据的访问)。

    推荐参考文:https://www.cnblogs.com/duanxz/p/4705164.html

    展开全文
  • 随机读写与顺序读写怎么去理解

    万次阅读 2018-11-07 11:40:19
    一起认识下关于磁盘的读写原理和顺序读写随机读写。 首先磁盘是如何存储数据的? 信息存储在硬盘里,把它拆开也看不见里面有任何东西,只有些盘片。假设,你用显微镜把盘片放大,会看见盘片表面凹凸不平,凸起的...

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

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

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

    机械盘和固态盘的区别:

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

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

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

    (硬盘、U盘、光盘、SD卡等存储设备的数据发生了丢失,使用迷你兔数据恢复软件(minitool)进行恢复找回。)

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

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

    文件的操作方式:

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

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

    随机示例:

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

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

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

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

    (迷你兔数据恢复minitool具有“删除恢复”、“格式化恢复”、“硬盘恢复”、“深度恢复”、“移动存储设备恢复”五大功能模块,恢复效率高,安全性有保障。)

    转载于:https://blog.51cto.com/13912525/2313851

    展开全文
  • 3.顺序读写随机读写 1.基本概念 (1)磁盘组合 盘片=2盘面 主轴 磁道 柱面 扇区 间隙 块:对于理解数据库系统特别重要的是磁盘被划分为磁盘块(或就称为块,或者像操作系统称为页), 每块的大小是4-64kB。整个...
  • 随机读写 vs 顺序读写

    万次阅读 2019-12-09 14:22:09
    顺序读写主要时间花费在了传输时间,随机读写需要多次寻道和旋转延迟。 固态盘:是由控制单元和固态存储单元(DRAM或FLASH芯片)组成,存储单元负责存储数据,控制单元负责读取、写入数据。 随机读写是相对顺序...
  • 顺序IO和随机IO 对于磁盘的读写分为两...Java中的随机读写 在Java中读写文件的方式有很多种,先总结以下3种方法: FileWriter和FileReader public static void fileWrite(String filePath, String content) { .
  • 磁盘顺序读和随机

    2020-07-08 21:48:35
    磁盘系统基本概念以及磁盘的顺序读写与随机读写 关于磁盘随机读写与顺序读写 总的来说是因为随机读写因为是存储在不同的位置,所以需要不断的寻道和旋转延迟,这就耗费了大量的时间,这个时间可能是传输时间的许多倍...
  • 1.1 顺序读取性能测试 图1.1 机械硬盘顺序读取测试 以上为机械硬盘顺序读情况下的性能测试,测试显示平均读取速度能达到84.0MB/s。 1.2 顺序写入性能测试 图1.2机械硬盘顺序写入测试 以上为机械硬盘顺序写...
  • Java实现磁盘顺序读写

    千次阅读 2020-11-03 23:08:10
    最近在研究Kafka的过程中,发现kafka性能好的原因之一就是数据的最终落盘采用了磁盘顺序读写,从各种博客和官方说法来看,磁盘顺序读写的性能是磁盘随机读写性能的几千倍,所以就在想,如果我要去开发一个...
  • 很诡异,内存访问一般要快于硬盘不是吗?LSMtree似乎就是依据这个原理
  • MySQL在实际工作时候的两种数据读写机制,一种是对 redo log、binlog这种日志进行的磁盘顺序读写,一种是对表空间的磁盘文件里的数据页进行的磁盘随机读写。 2.磁盘随机读写操作 磁盘随机读操作 MySQL在工作的...
  • MySQL在实际工作时候的两种数据读写机制,一种是对redo log、binlog这种日志进行的磁盘顺序读写,一种是对表空间的磁盘文件里的数据页进行的磁盘随机读写。 简单来说,MySQL在工作的时候,尤其是执行增删改操作的...
  • Linux测试磁盘IO性能(随机读写

    千次阅读 2020-05-07 10:50:51
    我们常用dd命令测试Linux磁盘IO情况,dd只是测试顺序读写性能。对于随机读写性能测试,可采用FIO工具。 一、安装 下载并安装 1 2 3 4 5 6 7 8 wget ...
  • 磁盘读写与数据库的关系 来源:互联网作者:佚名时间:07-16 10:14:59【大 中 小】 假定在程序效率和关键过程相当且不计入缓存等措施的条件下,读写任何类型的数据都没有直接操作文件来的快,不论MSYQL过程...
  • 对于redo log,binlog这种日志进行的磁盘顺序读写 在写redo log日志的时候,其实是不停的在一个日志文件末尾追加日志的,这就是磁盘顺序写。 磁盘顺序写的性能其实是很高的,某种程度上来说,几乎可以跟内存随机...
  • 假定在程序效率和关键过程相当且不计入缓存等措施的条件下,读写任何类型的数据都没有直接操作文件来的快,不论MSYQL过程如何,最后都要到磁盘上去读这个“文件”(记录存储区等效),所以当然这一切的前提是只读 ...
  • 对于表空间磁盘文件里的数据页进行的磁盘随机读写3. Linux操作系统的存储系统4. 数据库服务器使用的RAID存储架构4.1 RAID存储架构的电池充放电原理4.2 RAID锂电池充放电导致MYSQL数据库性能抖动的优化4.3 解决RAID...
  • 磁盘读写性能压力测试

    千次阅读 2019-09-23 19:05:16
    顺序读写 (吞吐量bw,常用单位为MB/s):文件在硬盘上存储位置是连续的。 适用场景:大文件拷贝(比如视频音乐)。 4K随机读写 (IOPS,常用单位为次):在硬盘上随机位置读写数据,每次4KB。 适用场景:操作系统...
  • 主要介绍了linux磁盘顺序写、随机写的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
  • 文件的随机读写

    万次阅读 2017-06-13 19:05:05
    顺序读写:文件指针只能从头移动到尾。 随机读写:文件指针可以随意移动,根据需要。 上面的两种文件读写方式不论是ASCII文件还是二进制文件都是可以的。 文件指针:在磁盘文件操作中有一个文件指针,用来知名当前应...
  • 假定在程序效率和关键过程相当且不计入缓存等措施的条件下,读写任何类型的数据都没有直接操作文件来的快,不论MSYQL过程如何,最后都要到磁盘上去读这个“文件”(记录存储区等效),所以当然这一切的前提是只读 ...
  • 磁盘读写与数据库的关系

    千次阅读 2017-07-28 13:20:34
    摘要: 一 磁盘物理结构 (1) 盘片:硬盘的盘体由多个盘片叠在一起构成。 在硬盘出厂时,由硬盘生产商完成了低级格式化(物理格式化),作用是将空白的盘片(Platter)划分为一个个同圆心、不同半径的磁道(Track),还将...
  • 基于磁盘读写的Kafka为什么那么快?

    千次阅读 2020-07-23 20:06:21
    这种飘忽不定的查询方式就造成了大量的时间消耗在了机械运动上,磁头被不停的移来移去,所以说我们一般说的磁盘读写慢实际上更强调的是磁盘随机读写慢。 所以相对随机读写,顺序读写就快很多了,因为顺序读写不需
  • 随机读写之DirectIO

    千次阅读 2019-06-14 22:28:09
    在上一节中讲过MappedByteBuffer VS FileChannel它们称得上零拷贝技术,但留下了顺序读比随机读快,顺序写比随机写快的问题,在我们的实际应用场景中为了回避随机读写需求,通常的做法都是对其进行文件分片(又将...
  • (dpdk f-stack) SPDK-高效磁盘io读写

    千次阅读 2019-02-24 09:34:24
    随机读写频繁的应用,如小文件存储(图片)、OLTP数据库、邮件服务器,关注随机读写性能,IOPS是关键衡量指标。 顺序读写频繁的应用,传输大量连续数据,如电视台的视频编辑,视频点播VOD(Video On Demand),关注...
  • 本文说的随机文件读写随机的反义词是顺序,这里的随机文件读写对应顺序文件读写。表示文件可以不按照顺序进行读写 进行文件读写的时候,基本上读是几乎不存在问题的,而写的话就稍微坑了一点,在 dotnet 里面...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 57,192
精华内容 22,876
关键字:

关于磁盘随机读写与顺序读写