谈这俩概念前、先来说说 大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. golang实现ios推送

    生成pem文件 打开Keychain Access 导出推送证书和私钥 推送证书 cert.p12 私钥 key.p12 导出.pem文件 转换推送证书 openssl pkcs12 -clcerts ...

  2. HW7.15

    public class Solution { public static void main(String[] args) { double[][] set1 = {{1, 1}, {2, 2}, ...

  3. 第二百二十八天 how can I 坚持

    hibernate 还有好多不会搞啊,本来很简单的东西,没用过就不会. 今天... 只是感觉很累,昨天爬山爬的,不知道该写点啥了,买的羽绒服到了,还行吧,凑合穿吧. 睡觉了.今天貌似又发脾气了.哎.. ...

  4. Spark RDD概念学习系列之RDD的操作(七)

    RDD的操作 RDD支持两种操作:转换和动作. 1)转换,即从现有的数据集创建一个新的数据集. 2)动作,即在数据集上进行计算后,返回一个值给Driver程序. 例如,map就是一种转换,它将数据集每 ...

  5. 一个效果很华丽的仿桌面APP,却胜似Launcher

    开发Android APP的同学是否对于Launcher实现的绚丽效果而痴迷呢?什么,连Android Launcher是什么都不知道.好吧,拿起侬的手机,在解锁后的首页界面上左右滑动滑动,体验体验, ...

  6. MYSQL数据库性能调优之七:其他(读写分离、分表等)

    一.分表 水平划分 垂直划分 二.读写分离 三.选择合理的数据类型 特别是主键 四.文件.图片等大文件使用文件系统存储 五.数据库参数配置 注意:max_connections最大连接数一般设置在10 ...

  7. 用jstack工具分析java程序

    最近做项目时遇到了一个问题,我的多个采集线程中,有一个线程经常挂起,线程并没有死掉,但是一直采集不到数据,为了解决这个问题,用到了jstack. 首先查找到java进程的pid,ps -ef|grep ...

  8. C#图解教程读书笔记(第1章 C#和.net框架)

    C#中的主要需要记住的基础概念 CLR公共语言运行库 CIL中间语言,所有的代码都会编译成中间语言. CLI公共语言基础结构 C#的优点 C#有自动垃圾回收机制

  9. python 自定义函数

    200 ? "200px" : this.width)!important;} --> 介绍 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参 ...

  10. Linux下生成动态链接库是否必须使用 -fPIC 的问题[转]

    在 Linux 下制作动态链接库,“标准” 的做法是编译成位置无关代码(Position Independent Code,PIC),然后链接成一个动态链接库.经常遇到的一个问题是 -fPIC 是不是 ...