存储 I/O 设计和性能调优
对于任何程序的运行来说,最慢、最花费时间的操作实际上是从磁盘中检索数据。这主
要缘于磁盘 I/O 访问中存在的物理机械过程(磁头旋转和寻道)。尽管磁盘存储技术在最近
几年取得了极大的进步,但磁盘的旋转速度却没有太大的提高。您必须清楚这样一个事实:
在一定条件下,RAM 访问仅需要大概 540 个 CPU 时钟周期,而磁盘访问则需要花费大概 20
000 000 个 CPU 时钟周期。很明显,系统中访问数据最薄弱的环节就是磁盘 I/O 存储系统,
从性能调整的角度来说,就是确保磁盘数据布局不会成为更严重的瓶颈。糟糕的数据布局将
会给 I/O 性能带来更大的影响。在对系统进行任何优化活动之前,首先应该了解您的存储
I/O 系统的物理体系结构,因为如果您所设计的存储 I/O 系统非常糟糕,并且其中包含慢
速磁盘,或者适配器的使用非常低效,那么其他的任何优化工作都无法提供帮助。
数据库的作用就是实现对数据的管理和查询。任何一个数据库系统,必然存在对数据的
大量读、写操作。所以 I/O 问题也往往是导致数据库性能问题的重要原因。要控制好数据库
的整体 I/O 性能,在规划数据库架构时就需要做好存储 I/O 系统的设计和配置。例如,将对
I/O 要求不同的文件放置在不同的存储设备上;规划表空间容器的分布、均衡 I/O 负担 、使
用并行 I/O 访问等。在一个应用系统的逻辑部署和物理部署图中,存储和操作系统位于应用
系统体系结构的最底层。而数据库是部署在操作系统和存储层之上的,所以我们在做数据库
的物理设计和逻辑设计之前,必须先做好存储 I/O 设计。存储 I/O 设计中最大的一个原则就
是将 I/O 访问的分布最大限度地平衡在所有可以利用的物理设备上。
本章主要内容包括:
存储基本概念
存储架构
存储相关性能调整案例
存储设计性能相关问题
存储 I/O 设计总结
1 存储基本概念
关于存储的概念太多,许多已经超出了本书的讨论范围。本章主要讲解最常见的几个概
念,它们是我们进行存储 I/O 设计所必须掌握的。
1.1 硬盘
硬盘处于整个存储系统的最底层,核心的业务数据通常都存放在硬盘上。我们从硬盘上
读取一次 I/O 要花费的时间如下: