存储 频道

经验总结:如何打破DBA与存储工程师的技术鸿沟(下)

存储硬件

存储硬件很可能是为数据库构建系统时最重要的部分之一。你也许希望拥有许多不同的LUN,以便用于数据库中将发生的各种类型的I/O。举例来说,一般情况下你希望:

重做日志文件拥有高带宽需求(64 KB),发送到重做日志的I/O大部分是写

索引查找拥有高带宽小块随机I/O(8 KB),并且多数情况下对索引的I/O大部分是读

表空间拥有大块I/O(256 KB),并且一般情况下对表空间的I/O大部分是读

正如你所看到的,一种大小是无法满足所有需求的,因此你必须完成以下几组匹配工作:

1.RAID级别与典型的读/写访问类型

2.数据条宽度与请求大小

3.带宽需求与RAID级别和请求大小

4.缓存策略与所处理的I/O类型

这些似乎都不太容易,不过如果你从最基本的问题着手,解决起来也不难。

重做日志

根据重做日志的大小和带宽量,你可能最初会认为需要RAID-5数据条。这其实要看情况而定,因为大多数10K RPM磁盘的数据传送速度为外磁道柱面每秒69 MB,内磁道柱面每秒39 MB,15K RPM的磁盘则更快。另外再加上RAID缓存的大小,你就无须使用RAID-5了。真正的决定因素在于:

1.带宽需求----每秒多少MB的日志数据

2.日志的大小----能够适应缓存吗?

3.你的RAID速度

你必须收集到上述三项重要信息,用各种不同的数据库和系统工具查看系统,确定重做日志的表现是否会限制数据库的性能和扩展,而如果是,那么重做日志的I/O需求又是什么。

索引文件

索引文件的结构相当简单。如果你需要速度快一些,就使用数据条带化值很小的RAID-1加上一块高性能15K磁盘。因为索引文件是小块读文件,并且常常是随机I/O,所以这是目前最快的方式。

表空间

根据表的大小及其被访问和查找的方式,RAID-1有时是更好的方法,不过其它时候RAID-5就是非常好的选择了。关键是决定表空间的I/O请求大小是多少,请求的大小常常取决于数据库中的可调参数。

结论

关于不同操作系统上的各种可调数据库有许多书籍和文献供参考,下面是我读过觉得有用的几本:

《在Solaris平台上配置和调节数据库(Configuring and Tuning Databases on the Solaris Platform)》,作者:Allan N. Packer,Sun微系统公司出版社,出版商:Prentice Hall(2001年12月5日),ISBN:0130834173。

《Oacle9i性能调节方法和技巧(erformance Tuning Tips & Techniques)》,作者:Richard J. Niemiec,出版商:McGraw-Hill Osborne Media(2003年5月12日),ISBN:0072224738。

《创建一个自调节Oracle数据库:自动化Oracle9i动态SGA性能[Oracle焦点系列](Creating a Self-Tuning Oracle Database: Automating Oracle9i Dynamic SGA Performance [Oracle In-Focus series])》,作者:Donald K. Burleson,出版商:Rampant TechPress(2003年8月1日),ISBN:0972751327。

数据库的构建正如其它应用一样,你需要确定数据库对文件系统/卷管理器、HBA和RAID的I/O模式,同时牢记性能需求和成本问题。由于数据库很复杂,调节起来有些难度,不过现在有很多工具供你查看数据,帮助你理解潜在的I/O问题。

0
相关文章