例如,文件系统迁移裸设备,增加磁盘数量,增加I/O通道带宽,提高磁盘条带化程度等。这种大动干戈,尤其是投入大量硬件和存储之后,却往往是收效甚微。
事实上,作为一个整体应用,很多系统大量I/O操作是应用软件不合理导致的。因此在出现大量I/O操作时,应先分析是否能优化软件。
通常而言,一个oltp的主要操作都只涉及局部数据,通过采用合理的索引策略,资源消耗非常低,不应该存在严重的I/O瓶颈。
一般只有数据仓库、统计报表等应用的大批量数据操作,oracle也有很多降低I/O瓶颈。例如,物化视图可降低数据统计运算量,统计信息采集只采集变化数据,包括RMAN增量备份,可采用快速增量备份技术等。
n 裸设备
Oracle数据库支持的主要存储类型包括普通文件系统、集群文件系统、裸设备、自动存储管理技术(ASM)等。从技术原理上讲,在大多数据操作情况下,应该是裸设备性能最佳。因此每当出现某种新存储技术时,业界都会将裸设备性能作为基准指标,与新存储技术的性能进行对比。但裸设备并不是每种操作的性能都是最佳的。
其中,顺序读/写主要针对统计运算。随机读/写主要针对一般交易型的联机事务。可见,在顺序读时,文件系统性能反而高于裸设备,其他3种情况都是裸设备高。
文件系统和裸设备的原理分析:
首先,基于文件系统的数据库操作,对数据的I/O操作需要经过操作系统的内存缓冲区,同时也要存储在数据库SGA内存区,这样不仅在内存保存了两份数据,也导致了访问开销的增加。而基于裸设备的数据库操作,I/O操作不需要存储在操作系统的内存缓冲区,同时也支持异步I/O,支持大批量的读写操作。因此,裸设备总体上I/O操作开销更小,而性能更佳。
但是,在进行大批量数据的顺序读操作时,也就是数据仓库等系统进行大型统计等操作的情况下,特别是进行全表扫描时,由于oracle Buffer cache采用LRU算法,这些数据保存在LRU列表的尾部,比按索引访问的数据会更快地淘汰出buffer cache。因此,如果采用裸设备技术,这些数据虽然不在oracle内存了,但只要操作系统内存足够,这些数据还保存在操作系统内存中。因此,文件系统情况下,大量统计运算操作,特别是重复数据的访问反而会更快一些。
除了在性能方面进行对比分析外,在可管理性方面也充分考虑。文件系统看得见,摸得着,作为oracle数据文件,还能自动扩展。而裸设备需要专门的卷组管理系统进行管理,需要创建VG、LV等都不能对裸设备进行操作。作为oracle数据文件,裸设备还不能自动扩展。因此,在海量数据库实施中,裸设备需要精心设计,例如,需要事先进行容量评估,在运行维护中也需要加强日常监控。
有没有将文件系统优点和裸设备优点结合起来的存储技术?有,这就是ASM.
文件系统的优点:
n 作为典型的数据仓库系统,该系统具有大批量顺序读写的技术特征,尤其是各种统计分析将导致大量顺序操作,而这正好是文件系统的优势。
n 文件系统可管理性更好。
n 由于客户硬件投入少,该系统为单机系统,不需要考虑在RAC环境下必须使用裸设备、ASM、集群文件系统等要求。
因此该数据仓库系统采用了再简单不过的JFS文件系统。目前,该系统已经平稳高效运行了多年,客户从未感觉过文件系统方面带来了什么I/O性能问题。