2.3优化设计重演日志文件
2.3.1 重演日志文件的大小
由于数据库在利用重演日志文件时是循环使用它们的,而且当LGWR进程在两个日志文件切换时,将自动产生一个检测点,所以重演日志文件的大小会直接影响到检测点出现的频率。而由于在数据库检测点时,对用户而言,数据库的速度会受影响,所以检测点的出现频率大,或者检测点正好出现在数据库处理数据高峰期,将会极大影响数据库的性能。因此,重演日志文件的大小设计,应考虑检测点出现的频率以及检测点应避开数据库处理数据的高峰期。
2.3.2 重演日志文件组的个数
在ARCHIVELOG模式下时,适当增加重演日志文件组的个数,可以降低数据库存档日志文件的频率。
2.3.3 重演日志文件的存档
应把重演日志文件的存档之处设置在磁盘读写更快的物理设备上。这样可以减少日志文件的存档时间。
2.4 回滚段的优化设计
2.4.1 回滚段数目的设计
要考虑数据库需要支持的并发事务的数目,因为每个回滚段有其所能支持的最大事务数,如果回滚段数目不够多,则有些新事务被迫要等待,将影响数据库的性能。
2.4.2 回滚段大小的设计
要考虑该回滚段能容纳数据库可能的最大事务的回滚项数。
2.5 优化数据库使用的内存配置
要调整数据库的高速缓冲区,共享池、重演日志缓冲区和进程全局区的大小平衡问题。
3.优化应用程序
3.1 采取统一的SQL程序
因为ORACLE在执行SQL文时,首先将当前要执行的SQL文与公共区域中保存的先前执行过的SQL文进行比较,SQL文相同时,就会跳过当前要执行的SQL文的解析处理,这样通过减少解析次数就加快SQL文的执行速度。
3.2 选取合适的SQL代码
在进行数据库操作时,同一结果可以用很多方法来实现。我们应当选取合适的SQL代码,使其更容易明了,并且运行速度更快。
3.3 明确列名
使用SELECT取得的列名一定要明确指定,并且应当使抽出的记录要尽量少。用SORT等的场合,因为ORACLE将必要的列的值放到WORK领域,因此减少列数也就节约了I/O回数。
3.4 注意结合索引的顺序
由于列的顺序不同而导致索引的作用效果不同。例如:(AGE,ADDRESS)顺序的结合索引。
WHERE AGE=28 AND ADDRESS='BEI JING' &结合索引有效
WHERE AGE=28 &结合索引有效
WHERE ADDRESS='BEI JING' &结全索引无效
3.5 注意WHERE的使用
3.5.1 索引列不要使用函数
由于索引列一旦使用了函数,索引就会变无效,因此在能用索引的情况下,尽量改变程序来利用索引。如:
WHERE SUBSTR(TELNO,2,2)='88'改为WHERE TELNO LIKE '88%'较好。
3.5.2 索引列不要使用NOT
由于索引列一旦使用不等于,索引就会变得无效,最后导致速度变慢。
3.5.3 不要用NULL
如果用了NULL,索引就会无效,变成全表检索,影响处理速度。
3.5.4 不要对索引列进行计算
如果对索引列进行计算,索引就会无效,也后导致速度变慢。
4.结束语
本文所提出的优化方法,能够起到提高ORACLE数据库性能以及提高ORACLE应用程序执行效率的作用。这仅是个人在实际工作中的经验总结,希望能够对广大同行起到一定帮助作用。