主机总线适配器(HBA)
即使价值2,000美元的HBA也会对大型数据库的性能造成重大影响。对HBA要考虑两个地方:
1.未处理的I/O请求量
2.可以实现的最大请求量
大多数HBA在驱动器软件中将未处理的请求量默认值设置为16,这就限制了发送给RAID设备的命令数,即使拥有很多的磁盘驱动器和随机I/O,这个数值也可能无法充分利用存储资源。
许多操作系统和设备驱动器都限制了I/O请求的大小,使之小于从表空间读或向表空间写所需的请求量。应该将设备驱动器内所设的限制更改为允许更大的请求量。当然,对每个设备驱动器和操作系
统要做不同的设置,而且有意思的是,这些设置常常改变。
存储硬件
存储硬件很可能是为数据库构建系统时最重要的部分之一。你也许希望拥有许多不同的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问题。