快捷搜索:

多建车道以提高Oracle性能

在公路扶植中,经由过程建立多条车道可以前进蹊径的流量。着实这个事理在Oracle数据库中也行得通。即可以将关键数据文件存储在多块硬盘上,以前进Oracle数据库的机能。可惜的是,不少数据库治理员没故意识到这一点。在这篇文章中笔者就以Oracle11G为例,阐明若何经由过程在硬盘之间散播关键数据文件来前进机能。

一、在硬盘之间散播关键数据文件的基滥觞基本则。

在传统的文件系统上(即不是在裸机上)支配Oracle数据库,可以经由过程将关键的数据文件散播到多个可用的文件系统上或者不合的硬盘上来前进数据库的机能。详细的来说,必要遵照如下几个原则。

一是对付表来说,每每包孕两个部分,即基础表与索引表。只要为基础表中的字段创建了索引,其对应的就有一张索引表。当用户造访表中的数据时,利用系统必要同时造访到索引表与数据表。此时我们可以将这两张表比喻成两辆车。假如现在只有一个车道(即将他们同时寄放在一个硬盘或者文件系统中),那么两辆车必须前后行使。而假如现在有两个车道(即将基础表与其相对应的索引表寄放在不合的硬盘或者文件系统中),那么这两辆车就可以并排行使。显然,后者的效率更高。为此笔者建议,可将常常必要造访的表和与之对应的索引表分开来寄放。

二是可以将日志文件也分开来寄放。不但光是数据表与索引表存在着这种状况。其其实日志文件治理中也是如斯。只要前提容许,那么最好能够将联机重做日志和归档日志与其它数据文件寄放在不合的硬盘或者文件系统上。由于当用户往数据库中写入数据时,必要同时往数据文件与重做日志文件中写入数据。此时假如将它们分开来寄放,那么就相称于有了多条车道,分手往不合的文件中写入数据。这无疑就可以前进数据写入的效率,从而前进数据库的机能。

二、哪些文件最好能够分开寄放?

在讲到硬盘之间散播关键数据文件的基滥觞基本则的时刻,笔者举了几个必要分开寄放的几个案例。然则在实际事情中,并不仅仅局限于上面提到的这些文件。笔者觉得,假如前提容许的话,那么可以斟酌将如下文件放置在不合的硬盘上。

一是表空间,如临时表空间、系统表空间、UNDO表空间等等。这三个表空间可能系统会同时进行造访。为此必要将其分开来寄放。二是数据文件和索引文件。上面提到过,必要将常常造访的数据文件与其对应的索引文件寄放在不合的硬盘上。由于这两类文件在造访数据时也可能会同时造访到。三是操作系统盘与数据库文件零丁寄放。显然Oracle系统肯定是与操作系统同时运行的。为了避免他们之间的I/Q冲突,就必要将Oracle支配在操作系统盘以外的磁盘上。四是联机重做日志文件。这个文件对照繁杂,不只要将其与其他文件分开来寄放。而且还必要留意的是,最好能够将其寄放在机能最佳的硬盘上。

着末必要阐明的一点是,增添磁盘也会增添资源。这不但光是购买磁盘所必要的花费,还包括治理的资源。以是这之间也会涉及到资源与机能之间的一个均衡问题。假如企业的数据不是很多,或者主如果涉及到查询操作,那么这么设计的话,就可能不怎么合理。由于投入要大年夜于回报。

三、若何确定是否必要将文件分开来寄放?

在实际事情中,企业的数据是一个从少到多的历程。也便是说,刚开始应用数据库的时刻,可能数据量对照少,此时出于资源的斟酌,没有将相关文件寄放在不合的磁盘上。然则跟着事情的深入,用户会发明数据库的机能在徐徐的低落。此时治理员就必要斟酌,能够采取这种多建车道的步伐,来前进数据库机能。当然在采取这个步伐之前,治理员必要先辈性评估。此时评估所必要用到的一个指标便是磁盘的I/O争用。

磁盘争用平日发生在有多个进程试图同时造访一个物理磁盘的环境下。如现在用户必要造访某个数据表中的数据,此时系统必要造访索引文件与数据表文件。假如将它们放置在同一磁盘上,那么在造访时就会发生I/O冲突。以是评估I/O冲突的严重程度,可以帮我们来确定是否必要将关键文件寄放在不合的磁盘上。

将I/O匀称的散播到多个可用的磁盘上,这可以有效的削减磁盘之间的争用环境,前进数据存储与读取的机能。从而前进Oracle等利用法度榜样的效率。在实际事情中,数据库节制文件中有两个参数可以用来赞助我们评估这个指标。这两个参数是文件匀称读取光阴和文件匀称写入光阴。不过在应用这两个参数的时刻,其只评估所有与数据库相关联的文件。治理员假如有必要的话,也可以经由过程下面的查询语句来查询数据文件是否存在I/O问题。查询的语法与结果如下图所示:

从如上的查询结果中可以看出某个数据文件是否忙碌,数据文件之间是否存在着/I/O冲突文件。这里必要留意的是,这个结果是一个动态的结果。在不合的时候、用户进行不合的操作时每每会得出不合的结论。为此笔者建议,在应用这个数据的时刻,最好能够多跟踪几回。然后阐发多次运行的结果。只有如斯,才能够获得对照合乎情理的判断。

平日环境下,治理员根据上面的结果可以得出三种结论。

第一种结论是上面这些数据文件都不是很忙。即文件的匀称读取光阴与写入光阴都对照短,表示这两个文件都是对照余暇的。此时正常环境下,数据库的机能应该是不错的。也便是说,假云云时数据库的机能不抱负的话,那么就不是磁盘的I/O所造成的。治理员应该从其他角度来改良数据库的机能。

第二种结论是每个数据库文件都异常的忙碌。此时有可能是读取光阴或者写入光阴对照长,或者说两个光阴都对照长。当多个数据文件同时对照忙碌并且他们处于同一磁盘的话,那么治理员就必要斟酌购买新的磁盘,然后将上面提到的这些关键文件从新收拾,让他们支配在不合的磁盘上。

第三种结论是某几个特定的数据文件对照忙碌,而其他数据文件还可以。此时治理员假如资源受到限定,那么也不必要从新购买硬盘。在磁盘上的物理写入和读取次数上假如呈现对照大年夜的差异,就注解某个磁盘负载过大年夜,即有很严重的I/O冲突。此时最好能够将这个磁盘中的文件进行调剂,如将某些文件移动到别的的一块I/O相对不怎么严重的磁盘上。不过在采取这个操作的时刻,必要留意一点。对付联机重做日志文件来说,纵然其所在的磁盘I/O冲突对照低,或者造访这个文件的光阴对照短,然则也不建议将其他数据文件转移到其所在的磁盘上来。由于平日环境下,为了保障数据库的机能,我们都建议将联机重做日志文件零丁寄放,并且还必要讲起放置在机能对照高的硬盘上。

总之,将关键的Oracle数据库文件分开放置。如斯的话可以有效避免磁盘争用成为Oracle数据库系统的机能瓶颈。

您可能还会对下面的文章感兴趣: