谈这俩概念前、先来说说 大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. freetds相关

    什么是FreeTDS  简单的说FreeTDS是一个程序库,可以实现在Linux系统下访问微软的SQL数据库! FreeTDS 是一个开源(如果你喜欢可以称为自由)的程序库,是TDS(表列数据流 )协 ...

  2. pku3664 Election Time

    http://poj.org/problem?id=3664 水题 #include <stdio.h> #include <map> using namespace std; ...

  3. C#中位、字节等知识

    本文介绍C#中位.字节等知识. 1. 位(bit) 位(bit)有叫做比特,指二进制中的一位,是二进制的最小信息单位. bit也被称作小b,用b表示. 2. 字节(bytes) 8位表示一个字节. 由 ...

  4. LeetCode 刷题记录(二)

    写在前面:因为要准备面试,开始了在[LeetCode]上刷题的历程.LeetCode上一共有大约150道题目,本文记录我在<http://oj.leetcode.com>上AC的所有题目, ...

  5. 汇编语言程序入门实验二:在dos下建立子目录操作

    汇编语言程序入门实验二:在dos下建立子目录操作 1,背景 在读此文,并读懂前,建议读者先阅读这两篇博客 1,在dos环境下汇编语言程序设计入门(输出hello world)和masm32的下载.安装 ...

  6. android 动画属性(一)之Animation

    Animation 在android 程序当中很多时候要用到动画效果,而动画效果主要是Animation来实现的,API给出的解释: 其中包含4种动画效果 AlphaAnimation 渐变透明度 R ...

  7. 无责任Windows Azure SDK .NET开发入门篇三[使用Azure AD 管理用户信息--3.1 Index用户列表]

    3.1 Index用户列表 或许当前域下的用户列表 [Authorize] public async Task<ActionResult> Index() { var userList = ...

  8. NBearV3中文教程总目录

    1.NBearV3 Step by Step教程——ORM篇 摘要:本教程演示如何基于NBearV3的ORM模块开发一个Web应用程序的全过程.本教程演示的实体关系包括:继承.1对1关联.1对多关联, ...

  9. Android Studio @Bind的用法,自动生成findViewById无需再实例化控件

    第一步:app 的build.gradle文件中添加 如下代码: compile 'com.jakewharton:butterknife:7.0.0' 点击Sync Now 同步下载第二步:安装插件 ...

  10. 全代码实现ios-3

    决定做ios开发的时候,看了很多本关于ios开发的书籍,其中有国内的人写的,也有根据外国的书翻译过来的. 很可惜,这些书里的例子没办法照搬过来,因为Xcode更新换代太快了,而这些书本的内容更新的速度 ...