从数据库层面理解:随机 I/O & 顺序 I/O

标签: 数据库 理解 随机 | 发表时间:2013-05-16 22:41 | 作者:linwaterbin
出处:http://blog.csdn.net
      谈这俩概念前、先来说说 大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最好的办法
作者:linwaterbin 发表于2013-5-16 22:41:07 原文链接
阅读:106 评论:0 查看评论

相关 [数据库 理解 随机] 推荐:

从数据库层面理解:随机 I/O & 顺序 I/O

- - CSDN博客数据库推荐文章
      在谈这俩概念前、先来说说 大I/O vs.      通常、我们把 <=16KB 的I/O认为是小I/O、而 >=32KB 的I/O认为是大I/O.      了解I/O的大小、影响到后期对缓存、RAID类型、LUN的一些属性的调优 .      当前大多数数据库使用的都是传统的机械磁盘.

理解MySQL数据库覆盖索引

- - haohtml's blog
看AUTO_INCREMENT就知道数据并不多,75万条. 很简单对不对?怪异的地方在于:. 如果换成MyISAM做存储引擎的时候,查询耗时只需要0.01s,用InnoDB却会是0.15s左右. 如果只是就这么点差距其实不是什么大不了的事,但是真实的业务需求比这个复杂,造成的差距也很大:MyISAM只需要0.12s,InnoDB则需要2.2s.,最终定位到问题症结是在这条SQL.

淘宝海量数据库之六-克服随机IO难题

- William - 阳振坤的博客
与传统磁盘相比,SSD固态盘提供了非常好的随机读性能,单盘可达35000IOPS (4KB)甚至更高,并提供512MB/s或以上的读出带宽. 但通常SSD盘的随机写性能甚至比一般磁盘更差,这是因为,尽管SSD的读和写都以4KB页(page)为单位,但SSD写入前需要先擦除已有内容,而擦除以块(block)为单位,一个块(block)通常是128个连续的页(page),即512KB.

转:数据库如何抵抗随机IO:问题、方法与现实

- {ZuiZui} - 唐福林-博客雨
随机IO几乎是令所有DBA谈虎色变的一个问题,这个问题,往往在数据量小的时候不出现,在数据量超过内存大小时,才陡然出现,令没有经验的DBA促不及防,也令有经验的DBA寝食难安. 传统的数据库架构对随机IO几乎没有还手之力. 传统数据库的核心通常是页级缓存、B+树、堆或索引组织表,这些机制,对随机IO的抵抗能力,都无一例外的可悲的差.

数据库如何抵抗随机IO:问题、方法与现实

- crystal - 风轻扬
随机IO几乎是令所有DBA谈虎色变的一个问题,这个问题,往往在数据量小的时候不出现,在数据量超过内存大小时,才陡然出现,令没有经验的DBA促不及防,也令有经验的DBA寝食难安. 传统的数据库架构对随机IO几乎没有还手之力. 传统数据库的核心通常是页级缓存、B+树、堆或索引组织表,这些机制,对随机IO的抵抗能力,都无一例外的可悲的差.

数据库水平切分的实现原理解析

- - 数据库 - ITeye博客
本文系转载,原文地址: http://lishuaibt.iteye.com/blog/409294. 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题. 对于一个大型的 互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载. 对于系统的稳定性和扩展性造成了极大的问题.

Android SQLite数据库版本升级原理解析

- - CSDN博客推荐文章
Android使用SQLite数据库保存数据,那数据库版本升级是怎么回事呢,这里说一下. 安装v1.0,假设v1.0版本只有一个account表,这时走继承SQLiteOpenHelper的onCreate,不走onUpgrade. 1、v1.0(直接安装v1.0). 1、v1.0   -->  v2.0              不走onCreate,走onUpgrade.

理解 LSM 树:写入密集型数据库的秘诀

- - 掘金后端
原文: yetanotherdevblog.com/lsm/. 日志结构的合并树( log-structured merge-tree LSM 树)通常是在处理大量写任务时使用的数据结构. LSM 树是许多数据库(包括 BigTable, Cassandra, Scylla,和 RocksDB)背后的核心数据结构.

通俗易懂理解数据库概念

- - 标点符
在Quora上曾经有个问题: Computer Programming: How would you explain a database in three sentences to your 8-year-old nephew被搬到了知乎上. 数据就像各种各样中药,在没有数据库之前,中药就是一包包这样杂乱无章地堆放着(unorganized data),找也不好找(inaccessible).

理解数据库中的undo日志、redo日志、检查点 | 乐天的个人网站

- -
数据库存放数据的文件,本文称其为data file. 数据库的内容在内存里是有缓存的,这里命名为db buffer. 某次操作,我们取了数据库某表格中的数据,这个数据会在内存中缓存一些时间. 对这个数据的修改在开始时候也只是修改在内存中的内容. 当db buffer已满或者遇到其他的情况,这些数据会写入data file.