Oracle数据库的性能优化研究

2022-09-12

数据库技术应用从传统的商务数据处理不断扩大到许多新的领域, 如计算机图像处理、多媒体应用、商业管理等[1], 要使这些领域中应用的信息系统高效、正常、安全地运行, 其中最为显著的就是数据库的性能问题。随着数据库规模的不断扩大, 数据库系统的性能问题越来越突出, 数据库应用系统能否正常、高效地运行倍受关注, 数据库优化技术方法的探索具有非常重要的意义。

影响数据库性能的因素包括:系统、数据库、网络。实际上, 为了保证Oracle数据库运行在最佳的性能状态下, 在信息系统开发之前就应该考虑数据库的优化策略。优化策略一般包括服务器操作系统参数调整、Oracle数据库参数调整、网络性能调整、应用程序SQL语句分析及设计等几个方面, 其中应用程序的分析与设计是在信息系统开发之前完成的。

1 Oracle对I/O的依赖性

Oracle DBMS (Database Management System) 的性能与操作系统和I/O子系统密切相关。某些时候, 操作系统会阻碍Oracle的性能。Oracle几乎就是它自己的操作系统。管理员必须利用操作系统来实现几个关键任务, 这些任务包括内存管理系统、进程调度程序和I/O子系统等。在操作系统的这些任务中, I/O子系统及I/O子系统的性能对Oracle DBMS的性能是非常重要的。Oracle的主要功能是为数据库用户提供和维护数据;数据库的数据 (不在内存中时) 就是存放在I/O子系统中的。Oracle的性能是和I/O子系统的性能直接相关的[2]。

实际上, Oracle DBMS的性能对I/O子系统的性能具有很强的依赖性。O r a c l e DBMS执行的绝大部分任务都涉及到某些I/O操作, 而且很多任务还涉及到大量的I/O操作。

2 调整I/O

对Oracle数据库用户而言, I/O可能是他们面临的最主要的问题之一。很多情况下, 磁盘I/O速度完全限制了系统性能。而在另一些情况下, 为等待完成用户进程对磁盘的I/O请求, 系统实际上已处于闲置状态。这样的系统称为I/O被限制的系统或被磁盘限制的系统。

管理员应当在系统设计阶段为I/O操作优化系统。I/O设计与管理员将要实现的系统类型密切相关:不同类型的系统需要不同类型的I/O模式和不同的I/O设计方案。在系统创建完毕之后, 首先应当调整系统内存, 然后再调整磁盘I/O。之所以要采用这样的调整顺序是因为必须确保在调整磁盘I/O时, 不必处理缓冲区命中率过低的问题, 而如果缓冲区命中率过低, 将会引起额外的I/O操作[3]。

2.1 识别磁盘竞争

对于单个磁盘驱动器, 只需简单地启动操作系统或第三方工具并检查每个驱动器上的IOPS即可。这些工具获得的数据将为管理员提供每个磁盘驱动器土I/O操作的准确信息。I/O操作的首要规则是每个磁盘驱动器上的随机I/O操作不能超过125IOPS, 而顺序操作不能超过300IOPS。如果系统中出现了磁盘盯I/O问题, 那么管理员将观察到大量的空闲CPU周期和很长系统响应时间[3]。

2.2 解决磁盘竞争

在解决磁盘竞争问题时应当遵循如下一些规则:

1) 分离系统中的顺序I/O。因为顺序如操作的速度远大于随机的, 所以分离出系统中的顺序I/O可大大提高驱动器的运行速度。

2) 分散随机I/O。可通过Oracle分片技术、操作系统分片技术或硬件分片技术来分片存储数据库表中的数据从而达到分散随机I/O的目的。

3) 区别存储数据及索引。通过分别存储一个被频繁访问的表和该表的索引, 管理员将允许对该表的查询同时访问位于不同磁盘的该表的数据及索引。

4) 对于一个包含数据库文件的磁盘, 管理员应当清除该磁盘上的非Oracle I/O操作。任何其他的磁盘I/O都将降低份Oracle访问该磁盘的速度。

下面部分内容将分别讨论这几种不同的解决方案及如何实现这些解决方案。

1) 分离系统中的顺序I/O

通过分离系统中的顺序I/O可使以顺序方式访问的磁盘的运行速度远高于以随机方式访问的磁盘的运行速度。管理员只需简单地将Oracle的重做日志文件放到不同的磁盘上就能实现系统中顺序I/O的分离。

管理员必须确保将每个重做日志文件都放到了它自己的磁盘上 (对镜像日志文件更是如此) 如果系统中使用了镜像重做日志文件的话。如果使用了操作系统或硬件的镜像特性, 那么Oracle的重做日志文件本身就在不同的卷上。尽管Oracle对每个重做日志文件的写操作都是顺序I/O操作, 但如果将某一重做日志文件与其镜像文件放到同一个磁盘上, 那么将导致该磁盘在相邻的读操作之间会在两个日志文件中检索数据, 从而降低磁盘的I/O速度。

通过镜像重做日志文件来降低系统故障的危险是非常重要的。管理员可通过Oracle、操作系统或硬件的容错特性来实现重做日志文件镜像。

2) 分散随机I/O

随机I/O的特点是被访问的数据位于数据文件的不同位置上。管理员只需简单地向Oracle中添加足够数量的磁盘并将表放置在所有这些磁盘上, 就能非常容易地降低随机I/O引起的性能问题。可根据系统的不同配置将数据分别存放在多个驱动器上, 管理员只需简单地将表存放到多个驱动器上就可实现随机I/O的分散化, 也就是分片技术。

Oracle分片技术的功能是将一个表的数据分成多个小部分, 并将这些不同的部分存放到不同的数据文件中。Oracle是通过CREATETABLESPACE命令在表空间层次上实现分片的。为完成这个任务, 管理员还必须在这个表空间中创建一个带有4个盘区的表。在该表空间中创建的表将跨越该表空间中的所有4个数据文件, 而这些数据文件分别位于不同的磁盘上。

3 结语

数据库的数据最终要存储在物理磁盘上。磁盘I/O操作是数据库性能最重要的方面, 它是系统消耗最大的Oracle数据库操作。影响磁盘I/O性能的主要原因除了本文分析的磁盘竞争外, 还有I/O次数过多和数据块空间的分配管理等问题。

摘要:对于数据库系统来说, 磁盘I/O操作是数据库性能最重要的方面, 它是计算机最大的开销。影响磁盘I/O性能的原因很多, 本文重点研究了其中较重要的一个因素——磁盘竞争问题, 主要从分离系统中的顺序I/O和分散随机I/O两个方面进行了探讨。

关键词:数据库,Oracle,优化,I/O优化

参考文献

[1] Abraham Silberschatz.数据库系统概念 (第1版) [M].北京:机械工业出版社, 2002, 13~14.

[2] Eyal Aronoff, Kevin Loney, NooraliSonawalla.Oracle 9i Performance TuningTips&Techniques[M].北京:清华大学出版社, 2004.pp.724.

上一篇:浅议初中物理实验教学改革下一篇:建筑给排水节能设计研究

本站热搜