1、应用程序设计的优化调整
应用程序设计的调整修改原则;根据不同的业务需求,从不同角度设计数据库,其设计核心是对数据的访问操作。常见的优化手段有:
(1)将长的数据分段放置;
(2)尽量重复命名用SQL语句,以充分利用库高速缓存(Library Cache);
(3)优化SQL语句,减少条件判断的使用。
2、对数据读写的优化调整
可以利用ORACLE本身带的utlbstat和Utlestat这两个SQL程序包收集数据库运行时的一些性能状况。最佳的采集时机是:当一个新应用程序刚开始启动的时候。这时最能反映出应用程序对数据的读写要求。上述两个SQL程序包采集到的信息主要是从V$SYSSTAT、V$LATCH、V$ROLLBACK、V$SESSION、V$LIBRARYCACHE等系统动态表中得到,我们也可以专门对这些表进行单独的分析。
3、内存管理的优化调整
对内存的管理,主要是从合理分配交换空间的使用;物理页调换的效率;高速缓冲区利用率如何等方面分析。涉及到内存使用的ORACLE性能优化调整主要有以下几个方面:
(1)调整ORACLE数据块(Blocks)和数据缓冲区((Database Buffers)的大小,主要参数是db_block_size;
(2)优化日志缓冲区(Redolog Buffers)的大小,主要参数是Log_buffers;
(3)优化共享池(Shared Pool)的大小,主要参数是Shared_pool _size;
(4)确认数据直接读写Cache的有效性;
(5)分配足够合理的库高速缓存(Library Cache)空间
(6)设置合适的任务高速缓存区游标(Session cache Cursors)值,主要参数是Session_cached_cursors的初始化值;
(7)在共享池空间内,预先锁定足够大的数据块(Blocks)给PL/SQL使用,此调整主要关系到需要大量使用存储过程(Storage Procedure)的程序应用。
注释:本文所提到的参数,均可从ORACLE的initSID.ora文件中查找和修改;
也可从V$PARAMETER表中查询。
4、磁盘I/O的优化调整
磁盘I/O的瓶颈是较容易发现的。均衡磁盘I/O操作可以提高数据的读写速度;同时应该将不同的数据文件和表空间平均地分配在的有的可使用磁盘上。主要的优化调整手段有:
(1) 为数据表建立索引,并将索引与原表分开放置;索引的使用贵精而不贵多;
(2) 对需要经常使用插入(INSERT)和修改(UPDATE)操作的应用程序,应将日志文件(Redolog files)放置在独自的磁盘设备上,通过与其它的磁盘分开,来提高写数据的速度。
(3) 检查数据表空间否碎片过多,并且及时收集整理数据库碎片;
(4) 使用更多的数据库缓冲区去高速读写数据,以便减少I/O操作;
(5) 选择合理的文件系统类型;例如:我局的“九七”工程系统就是选用DIGTAL UNIX的高级文件管理系统类型(ADVFS)来代替普通的文件系统类型(UFS);
(6) 在可能的条件下,尽量购买更多的磁盘来扩容系统容量。
5、CPU使用的优化调整
本文讨论的CPU优化调整以UNIX操作系统为例。CPU使用时间分四个部分;用户(usr);系统(sys);I/O等待wio;空闲(idle)。通常应用程序消耗大量的用户CPU时间,少量的系统CPU时间。一般UNIX操作系统运行时的合理CPU是:
Total CPU (user+sys):80 percent
Wio:10 percent
Idle:10 percent
如果I/O等待的时间值很高,就应该分析系统的I/O性能:如果系统的运行负荷很重并且CPU空闲值很高,那么系统可能出现内存竞争问题。主要的优化调整手段有:
(1) 将所有的ORACLE用户、进程保持为一CPU优先级;
(2) 使用多CPU处理器的系统,并与用户进程紧密捆绑;
(3) 灵活使用Client/Server结构;
(4) 对大量的Exports/Imports事务处理,使用单任务工作方式。
6、ORACLE资源竞争的优化调整
如果发现数据库运行缓慢,而问题又并非出自CPU或者磁盘竞争等方面。那么问题肯定是由ORACLE本身的资源竞争而引起的。减少ORACLE资源竞争的方法有:
(1)使用V$tables等动态表的信息去分析数据库的运行情况,将各资源竞争段隔离解决:
(2)减少数据库资源闩(Latch Frees)和回滚段(Rollback Segmets)的竞争;
(3)减少日志缓冲闩(Redolog Buffer Latches)的竞争;
(4)减少并行访问(Parallel Query)的竞争;
(5) 适当优化调整操作系统的内核参数:特别需要注意的是,对于不同的操作系统,其参数调整的区别是非常大的。
7、ORACLE并行访问服务(Parallel Server)的优化调整
对ORACLE Parallel Server方面的调整主要是减少DLM(Distributed lock Manager)瓶颈,优化手段有以下几方面;
(1) 尽量避免索引竞争。由于在ORACLE数据库内索引将会大量的使用,并且是数据库竞争的主要原因。解决的要点是:合理建立索引、合理选择关键字、对应不同的数据块使用不同的索引分布:
(2) 避免Free List竞争。解决的要点是:建立多个Free lists和多个Free list groups,将Free list headers放置在不同的数据块上;
(3) 避免锁竞争。强占锁是OPS中最主要的优化因素。只有适当地将应用程序对系统资源的请求进行隔离,才是最有效解决锁问题的办法;
(4) 减少频繁的磁盘I/O读写。把每个Instance的Rollback segments 和Redologs放置到不同的磁盘上,这样可以将每个节点对数据的读写竞争降至最低。
(5) 常用来分析和监控OPS(ORACLE Parallel Server)的状态的系统级动态表有以下几类:
V$SESSION-WAIT
V$SESSION_EVENT
V$SYSTEM_EVENT
V$SQL_AREA
V$CACHE
V$PING
posted on 2007-06-13 14:56
老董 阅读(399)
评论(0) 编辑 收藏 所属分类:
Oracle