Oracle各个命中率查询

注:SQL语句的解析有软解析soft parse与硬解析hard parse之说,以下是5个步骤:
1:语法是否合法(sql写法)
2:语义是否合法(权限,对象是否存在)
3:检查该sql是否在公享池中存在
-- 如果存在,直接跳过4和5,运行sql. 此时算soft parse
4:选择执行计划
5:产生执行计划
-- 如果5个步骤全做,这就叫hard parse.








由V$SYSSTAT得出实例效率比(Instance Efficiency Ratios)






1.Buffer cache hit ratio:该项显示buffer cache大小是否合适。(值越接近1越好)


select 1-((a.value-b.value-c.value)/d.value) 
  from v$sysstat a,v$sysstat b,v$sysstat c,v$sysstat d 
  where a.name='physical reads' and
         b.name='physical reads direct' and
         c.name='physical reads direct (lob)' and
         d.name='session logical reads';






Buffer hit ratio:该项显示buffer命中率。


select 1 - (sum(decode(name, 'physical reads', value, 0)) /
       (sum(decode(name, 'db block gets', value, 0)) +
       sum(decode(name, 'consistent gets', value, 0)))) 
       "Buffer Hit Ratio"
from v$sysstat;




Soft parse ratio:这项将显示系统是否有太多硬解析。该值将会与原始统计数据对比以确保精确。例如,软解析率仅为0.2则表示硬解析率太高。不过,如果总解析量(parse count total)偏低,这项值可以被忽略。


select 1-(a.value/b.value) 
  from v$sysstat a,v$sysstat b 
  Where a.name='parse count (hard)' and b.name='parse count (total)';




In-memory sort ratio:该项显示内存中完成的排序所占比例。最理想状态下,在OLTP系统中,大部分排序不仅小并且能够完全在内存里完成排序。
公式:sorts (memory) / ( sorts (memory) + sorts (disk) )




select a.value/(b.value+c.value) 
  from v$sysstat a,v$sysstat b,v$sysstat c 
  where a.name='sorts (memory)' and 
         b.name='sorts (memory)' and c.name='sorts (disk)';






Parse to execute ratio:在生产环境,最理想状态是一条sql语句一次解析多数运行。
公式:1 - (parse count/execute count)




select 1-(a.value/b.value) 
  from v$sysstat a,v$sysstat b 
  where a.name='parse count (total)' and b.name='execute count';




Parse CPU to total CPU ratio:该项显示总的CPU花费在执行及解析上的比率。如果这项比率较低,说明系统执行了太多的解析。
公式:1 - (parse time cpu / CPU used by this session)




select 1-(a.value/b.value) 
  from v$sysstat a,v$sysstat b 
  where a.name='parse time cpu' and
         b.name='CPU used by this session';




Parse time CPU to parse time elapsed:通常,该项显示锁竞争比率。这项比率计算
是否时间花费在解析分配给CPU进行周期运算(即生产工作)。解析时间花费不在CPU周期运算通常表示由于锁竞争导致了时间花费
公式:parse time cpu / parse time elapsed




select a.value/b.value 
  from v$sysstat a,v$sysstat b 
  where a.name='parse time cpu' and b.name='parse time elapsed';






从V$SYSSTAT获取负载间档(Load Profile)数据


  负载间档是监控系统吞吐量和负载变化的重要部分,该部分提供如下每秒和每个事务的统计信息:logons cumulative, parse count (total), parse count (hard), executes, physical reads, physical writes, block changes, and redo size.


  被格式化的数据可检查'rates'是否过高,或用于对比其它基线数据设置为识别system profile在期间如何变化。例如,计算每个事务中block changes可用如下公式:
db block changes / ( user commits + user rollbacks )




select a.value/(b.value+c.value) 
  from v$sysstat a,v$sysstat b,v$sysstat c 
  where a.name='db block changes' and
         b.name='user commits' and c.name='user rollbacks';






Blocks changed for each read:这项显示出block changes在block reads中的比例。它将指出是否系统主要用于只读访问或是主要进行诸多数据操作(如:inserts/updates/deletes)
公式:db block changes / session logical reads
执行:


select a.value/b.value 
  from v$sysstat a,v$sysstat b 
  where a.name='db block changes' and 
         b.name='session logical reads' ;


Rows for each sort:
公式:sorts (rows) / ( sorts (memory) + sorts (disk) )
执行:
select a.value/(b.value+c.value) 
  from v$sysstat a,v$sysstat b,v$sysstat c 
  where a.name='sorts (rows)' and 
         b.name='sorts (memory)' and c.name='sorts (disk)';













来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29677883/viewspace-1170239/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29677883/viewspace-1170239/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值