v$SYSSTAT:
SQL> SELECT 1 - (phy.value / (cur.value + con.value))
2 "CACHE HIT RATIO"
3 FROM v$sysstat cur, v$sysstat con, v$sysstat phy
6 WHERE cur.name = 'db block gets'
7 AND con.name = 'consistent gets'
8 AND phy.name = 'physical reads';
CACHE HIT RATIO
---------------
.908160337
report.txt
Statistic Total Per Transact Per Logon Per Second
--------------- ------ ------------ --------- ----------
consistent gets 121754 1117.07 6764.11 50.73
db block gets 20628 189.25 1146 8.6
physical reads 104695 960.5 5816.94 43.62
测量高速缓存命中率
Oracle 收集对数据访问的统计并将其存储在动态性能表 V$SYSSTAT 中使用以下三种系统统计测量高速缓存命中率
• db block gets 对块的当前映像的访问次数
• consistent gets:对块的读一致性映像的访问次数
• physical reads 从磁盘读取的块的数目
用此公式计算缓冲区高速缓存的命中率
命中率 = 1 - (physical reads/(db block gets + consistent gets))
把 db_blocks_gets 和 consistent_gets 相加给出了所需数据的总数此值包括由对内存中缓冲区访问来满足的请求以及导致物理 I/O 的请求可以将命中率乘以 100 将其转换为百分比
因为这些统计只能从例程启动时开始收集所以应在正常工作负载期间查询它们而不是在启动之后立即查询因为在例程启动时缓冲区高速缓存是空的,所以启动后会有较多的 physical reads
阅读(2400) | 评论(0) | 转发(0) |