WEB开发网
开发学院数据库Oracle 详解Oracle几种性能调优方法 阅读

详解Oracle几种性能调优方法

 2009-04-02 13:12:30 来源:WEB开发网   
核心提示: SQL>SELECTname,phyrds,phywrtsFROMv$datafiledf,v$filestatfsWHEREdf.file#=fs.file#;对于使用频率较高的物理文件,可以采用以下策略:将I/O尽可能平均分配在尽可能多的磁盘上,为表和索引建立不同的表空间,详解O

SQL>SELECT name,phyrds,phywrts FROM v$datafile df,v$filestat fs
WHERE df.file# =fs.file#;

对于使用频率较高的物理文件,可以采用以下策略:

将I/O尽可能平均分配在尽可能多的磁盘上。

为表和索引建立不同的表空间。

将数据文件与重做日志文件分离在不同的磁盘上。

减少不经Oracle SERVER的磁盘I/O。

调整竞争

当多个进程对相同的资源发出申请时,产生竞争。

修改Process参数

该参数定义可以同时连接到Oracle数据库的最大进程数,缺省值为50。注意,Oracle的后台进程也包括在此数目中,建议将该值改为200。

减少调度进程的竞争

减少调度进程的竞争,通过查询v$dispatcher表来判定调度进程的竞争

SQL>SELECT network ,sum(busy)/sum(busy)+sum(idle) FROM v$dispatcher
GROUP BY network;

如果某种协议忙的比率超过50%,应增加MTS-DISPATCHERS的值。

减少多线程服务进程竞争

首先查询V$SYSSTAT表判定是否发生多线程服务进程竞争:

SQL>SELECT DECODE(totalq,0,’No request’,wait/totalq||’hunderths of seconds’) FROM v$sysstat
WHERE type=’common’;

如果共享服务进程数量已达到初始化参数文件中MTS-MAX-SERVERS指定的最大值,但应用运行时,平均请求等待时间仍持续增长,那么,应加大MTS-MAX-SERVERS的值。

减少重做日志缓冲区竞争

通过查询V$SYSSTAT表判定redo log 文件缓冲区是否足够。

SQL>SELECT name,value FROM v$sysstat
WHERE name=’redo log space request’;

此处value的值应接近于0,否则,应增大初始化参数文件的LOG-BUFFEQS的值。

减少回退段竞争

回退段对性能也有影响,根据事物大小情况来分配合适的回退段。

首先判定回退段的数量能否满足系统运行的需要:

查询V$WAITSTAT表与V$SYSSTAT表

SQL>SELECT class,count FROM v$waitstat
WHERE class IN (’system undo header’,system undo block’,
’undo header’,’undo block’);
SQL>SELECT sum(value)
FROM v$sysstat WHERE name IN (’db block gets’,’consistent gets’);

如果任何一个class/sum(value)>10%,那么考虑增加回退段。回退段的数量一般按如下规律设定:

用户数  回退段个数

n<164

1632<=n n/4 但不超过50

减少Free List竞争

当多个进程同时向一个表中插入数据时,产生Free List竞争。

SQL>SELECT class,count FROM v$waitstat
WHERE class=’free list’;
SQL>SELECT sum(value)
FROM v$sysstat
WHERE name IN (’db block gets’,’consistent gets’);

如果class/sum(value)>1%,则应增加该表的Free List 的值。

上一页  1 2 3 

Tags:详解 Oracle 性能

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接