mysql 开发进阶篇系列 21 磁盘I/O问题(RAID)

时间:2022-01-02 18:59:21

一.概述

  作为应用系统的持久化层,不管数据库采取了什么样的Cache机制,数据库最终总是要将数据储存到可以长久保存的I/O设备磁盘上。但磁盘的存取速度显然要比cpu,ram的速度慢很多。因此,对于比较大的数据库,磁盘I/0 一般总会总为数据库的一个性能瓶颈。
  ram:又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。
  我们章节前面提到的sql优化,数据库对象优化,数据库参数优化,以及应用程序优化等。大部分都是想通过减少或延缓磁盘读写来减轻磁盘I/O的压力及对性能的影响。本章从硬件方面出发,描述下磁盘陈列(RAID),从等更底层的方面来介绍提高磁盘I/O能力。

二 .磁盘阵列

       RAID是 Redundant array of inexpensive disks的缩写,通常叫磁盘阵列。 RAID就是按照一定策略将数据分布到若干物理磁盘上,这样不仅增强了数据存储的可靠性,而且可以提高数据读写的整体性能,因为能过分布实现了数据的"并行"读写。

  常见的RAID级别比较如下图所示:
    mysql 开发进阶篇系列 21 磁盘I/O问题(RAID)

  2.1 如何选择RAID级别

              了解各种RAID级别的特性后,我们就可以根据数据读写的特点,可靠性要求,以及投资预算等来选择合适的RAID级别比如:

              (1) 数据读写都很频繁,可靠性要求也很高,最好选择RAID 10。

              (2) 数据读很频繁,写相对较少,对可靠性有一定要求,可以选择RAID 5。

              (3) 数据读写都很频繁,可靠性要求也很不高,最好选择RAID 0。

  2.3 软RAID和硬 RAID

              最初,RAID都是由硬件实现的,要使用RAID,至少需要有一个RAID卡。现在一些操作系统中提供的软件包,也模拟实现了一些RAID特性,虽然性能上不如硬RAID,但相比单个磁盘,性能和可靠性都有改善。
  RAID卡如下图所示:
mysql 开发进阶篇系列 21 磁盘I/O问题(RAID)

  关于软RAID,这篇中有介绍:

   转载来源 Windows Server 2008 R2做软RAID实战文章  

  总结:现在公司一般都是用硬RAID。以我们公司来说是用RAID 10,也就是RAID 1+ RAID 0组合。