谈这俩概念前、先来说说 大I/O vs. 小I/O
     通常、我们把 <=16KB 的I/O认为是小I/O、而 >=32KB 的I/O认为是大I/O
     了解I/O的大小、影响到后期对缓存、RAID类型、LUN的一些属性的调优 
     
     当前大多数数据库使用的都是传统的机械磁盘
     因此、整个系统设计要尽可能顺序I/O
     避免昂贵的寻道时间和旋转延迟的开销
     随机小I/O消耗比顺序大I/O更多的处理资源
     随机小I/O更在意系统处理I/O的数量、即IOPS、比如、OLTP
     而顺序大I/O则更在意带宽、即MB/s、比如、OLAP
     因此、如果系统承载了多种不同的应用
     必须了解它们各自的需求、是对IOPS有要求、还是对带宽有要求

传统机械磁盘最大的问题在于读写磁头

读写磁头的存在可以让磁盘既能顺序I/O、也可随机I/O

但是、随机I/O需要花费昂贵的磁头旋转和定位来查找

因此、顺序IO访问的速度远远快于随机IO

数据库的很多设计也都是尽量充分利用顺序IO、比如Oracle REDO LOG写便是顺序IO

如果、数据库服务器同时使用顺序和随机I/O、随机I/O从缓存中受益最多
     原因有 3 :
     ① 顺序I/O一般只需扫描一次数据、所以、缓存对它用处不大
     ② 顺序I/O比随机I/O快
     ③ 随机I/O通常只要查找特定的行、但I/O的粒度是页级的、其中大部分是浪费的
          而、顺序I/O所读取的数据、通常发生在想要的数据块上的所有行
          更加符合成本效益
     所以、缓存随机I/O可以节省更多的workload
        
     传统的数据库架构对随机IO几乎没有还手之力、随机IO几乎令所有DBA谈虎色变
     而聪明如MySQL InnoDB 则利用事务日志把随机I/O转成顺序I/O
     窃以为、如果能负担得起、增加内存是解决随机I/O最好的办法

随机 I/O & 顺序 I/O的更多相关文章

  1. php保留键随机打乱数组顺序

    最近遇到一个需求,把一个数组随机打乱顺序,我们可以用php的shuffle函数,但是这个函数会把数组的键清空建立新的键,那么我们若想保留键只需要利用shuffle函数再做一下处理就可以了.可以自定义一 ...

  2. java Collection.shuffle()随机打乱一个顺序数组

    如何打乱一个顺序的数组,其实集合的帮助类Collection就有现成的方法可用,而且效率还蛮高的,总比自定义随机数等等方法要好很多.其实乱序就这么简单,步骤如下: 1. 将一个顺序排列的数组添加到集合 ...

  3. java随机打乱集合顺序

    public static void main(String[] args) { List <Integer> intList = new ArrayList<Integer> ...

  4. 理解I/O:随机和顺序

    转自:https://blog.csdn.net/BaiWfg2/article/details/52885287 原文:http://www.violin-memory.com/blog/under ...

  5. 使用JavaScript脚本控制媒体播放(顺序播放和随机播放)

    在JavaScript脚本中获取<audio.../>元素对应的对象为HTMLAudioElement对象,<video.../>元素对应的对象为HTMLVideoElemen ...

  6. 关于顺序磁盘IO比内存随机IO快的讨论

    这个问题来源于我书中引用的一幅图: 我们从图中明显可以看某性能测试的结果表明普通机械磁盘的顺序I/O性能指标是53.2M values/s,SSD的顺序I/O性能指标是42.2M values/s,而 ...

  7. 数据结构Java实现02----线性表与顺序表

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. 数据结构Java实现01----线性表与顺序表

    一.线性结构: 如果一个数据元素序列满足: (1)除第一个和最后一个数据元素外,每个数据元素只有一个前驱数据元素和一个后继数据元素: (2)第一个数据元素没有前驱数据元素: (3)最后一个数据元素没有 ...

  9. BZOJ1336 Balkan2002 Alien最小圆覆盖 【随机增量法】*

    BZOJ1336 Balkan2002 Alien最小圆覆盖 Description 给出N个点,让你画一个最小的包含所有点的圆. Input 先给出点的个数N,2<=N<=100000, ...

随机推荐

  1. 了解shell

    1. shell 脚本文件第一行:    #!/bin/sh 或 #!/bin/bash "#!"  又称为纪数,在执行bash脚本的时候,内核会根据它来确定该用哪个程序来解释脚本 ...

  2. 第二百一十九天 how can I 坚持

    今天好冷,白天在家待了一天,晚上,老贾生日,生日快乐,去海底捞吃了个火锅,没感觉呢. 今天还发现了个好游戏,纪念碑谷,挺新颖,就是难度有点大了. 好累.睡觉,明天想去爬山啊,可是该死的天气.

  3. iPhone 6/6 Plus 出现后,如何改进工作流以实现一份设计稿支持多个尺寸?

    iPhone 6/6 Plus 出现后,如何改进工作流以实现一份设计稿支持多个尺寸? 2014-12-05 09:33 编辑: suiling 分类:iOS开发 来源:知乎(pigtwo)  2 22 ...

  4. 使用google map v3 api 开发地图服务

    Google Map V3 API 学习地址: http://code.google.com/intl/zh-CN/apis/maps/documentation/javascript/article ...

  5. 关于iTunes11.1 不能刷自制固件的解决方案

    由于iTunes升级到11.1后, 苹果在程序里限制了不允许刷自制固件, 所以想刷自制固件暂时只能降级iTunes到11.1版本之前, 这里提供iTunes 11.0.5 的下载地址: Windows ...

  6. 最精简的IOCP封装

    最精简的IOCP封装,DELPHI XE8直接编译通过.Winsock2.pas即使用DELPHI自带的,相信XE7也能编译,或者XE6,XE5也能. 单说Winsock2.pas,我见过无数种版本的 ...

  7. flask中的session对象方法

    'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys ...

  8. POJ1469COURSES(二分图匹配)

    裸的二分图匹配 题目poj.org/problem?id=1469 不解释:

  9. C# 运用params修饰符来实现变长参数传递

    一般来说,参数个数都是固定的,定义为集群类型的参数可以实现可变数目参数的目的,但是.NET提供了更灵活的机制来实现可变数目参数,这就是使用params修饰符.可变数目参数的好处就是在某些情况下可以方便 ...

  10. 自定义Template,向其中添加新的panel

    参考网站:https://www.devexpress.com/Support/Center/Example/Details/E2690 思路: 新建一个DefaultTemplate:       ...