本人很喜欢Oracle在工作中也很喜欢总结关于Oracle优化缓沖区的经验教训下面就这个问题来详细说说Oracle优化缓沖区吧
()获取缓沖区活动情况
为了Oracle优化缓沖区首先应了解缓沖区的活动情况这可以通过查询动态性能表(需有SELECT ANY TABLE特权)V$SYSSTAT来获得
SVRMGR> select name value from v$sysstat
> where name in(db block getsconsistent getsphysical reads);
NAME VALUE
db blockgets
nsistent gets
physica reads
rows selected
其中db block gets和consistent gets的值是请求数据缓沖区中读的总次数physical reads为请求数据时引起从盘中读文件的次数
()缓沖区命中率
从缓沖区读的可能性的高低称为缓沖区命中率它可用如下公式计算Hot Ratio=(physical reads/(db block gets+consistent gets)
缓沖区命中率越高其速度就越快如果命中率低于%或%时则应增加缓沖区(即DB_BLOCK_BUFFERS)以改进性能根据公式可以计算出本例中的Hot Ratio=(/(+)=%如果缓沖区的命中率很高希望在保持良好性能下适当减少缓沖区这时可减少DB_BLOCK_BUFFERS的值其最小值为
当一个文件上的输入/输出(I/O)请求干扰了第二个文件的输入/输出请求时那么这两个文件就会发生争用所以两个随机存取的文件只有在无可能同时存取它们时才可以存放在同一设备中由此可以分为两种类型的I/O争用并行I/O争用和干扰争用并行I/O争用多发生在同一时间对同一设备请求多种存取时这种类型的争用可以通过分离与表相联系的索引的办法来消除干扰争用发生在对一个顺序文件进行写操作而同时进行读命令时中断而引起
I/O优化的目的是解决I/O瓶颈问题I/O的优化必须在内存优化之后进行可以通过减少磁盘争用有效分配数据块空间和避免动态空间管理三个方面来优化I/O
减少磁盘争用
V$FILESTAT视图提供有关物理读写的信息物理I/O针对磁盘逻辑I/O针对内存如果有多个进程同时访问同磁盘就产个磁盘争用
监控Oracle的磁盘活动
要解决磁盘争用首先应该知道磁盘的活动情况确定是否发生争用这可以通过查询动态性能表(需有SELECT ANY TABLE特权)V$FILESTAT和V$DATAFILE来确定例如
SQL>SELECT Namephyrdsphywrts
FROM V$DATAFILE dfV$FILESTAT fs
WHERE dffile#=fsfile#
其中
◆ phyrds记录从盘上读每个数据库文件的次数
◆ phywrts记录往盘上写数据库文件的次数
一个盘上总的I/O次数是该盘上所有数据库文件的phyrds和phywrts之和必须把物理读写的总量控制在用户硬件和操作系统的最优限制内以上介绍Oracle优化缓沖区