各位老铁们,大家好,今天由我来为大家分享分享一篇珍藏笔记:Oracle中各种命中率的总结与调优,以及的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
通常在98%以上,否则,需要考虑增加共享池、绑定变量、修改cursor_sharing等参数。
2)计算共享池内存使用率:
SQLSELECT (1 – ROUND(BYTES/(TSP_IN_M * 1024 * 1024), 2)) * 100 || ‘%’
来自V$SGASTAT
WHERE NAME=’可用内存’ AND POOL=’共享池’;
其中, TSP_IN_M 是你的总共享池的SIZE(M)
共享池内存使用率应稳定在75% 到90% 之间。如果太小,会浪费内存,如果太大,又会出现内存不足的情况。
查询空闲共享池内存:
SQLSELECT * FROM V$SGASTAT
WHERE NAME=’可用内存’ AND POOL=’共享池’;
3)db buffer cache命中率:
计算公式:命中率=1 – [物理读数/(块获取数+一致获取数)]
SQLSELECT 名称、PHYSICAL_READS、DB_BLOCK_GETS、CONSISTENT_GETS、
1 – (PHYSICAL_READS/(DB_BLOCK_GETS + CONSISTENT_GETS)) ‘命中率’
来自V$BUFFER_POOL_STATISTICS
WHERE NAME=’默认’;
通常应该在90%以上,否则需要调整,增加DB_CACHE_SIZE
4)数据缓冲区命中率:
SQL 从v$sysstat 中选择值,其中name=’物理读取’;
SQL select value from v$sysstat where name=’physicalreads direct’;
SQL select value from v$sysstat where name=’物理读取直接(lob)’;
SQL 从v$sysstat 中选择值,其中name=’consistency gets’;
SQL 从v$sysstat 中选择值,其中name=’db block gets’;
这里命中率的计算应该是
设x=物理直接读取+ 物理直接读取(lob)
命中率=100-(物理读-x)/(一致获取+数据库块获取-x)*100
通常如果发现命中率低于90%,就应该调整应用程序,考虑是否增加数据缓冲区。
5)共享池的命中率:
SQL select sum(pinhits-reloads)/sum(pins)*100 ‘hit radio’ from v$librarycache;
如果共享池的命中率低于95%,则应考虑调整应用(通常不使用bind var)或增加内存。
6)计算在内存中排序的比率:
SQLSELECT * FROM v$sysstat t WHERE NAME=’sorts(内存)’;—查询内存排序号
SQLSELECT * FROM v$sysstat t WHERE NAME=’sorts (disk)’;—查询磁盘排序号
–计算内存比率排序
SQLSELECT round(sort_in_memory/(sort_in_memory+sort_in_disk),4)*100||’%’ FROM Dual;
该比例越大越好。如果太小,需要考虑调整,增大PGA。
7)PGA的命中率:
计算公式:BP x 100/(BP + EBP)
已处理BP: 字节
EBP: 额外字节读/写
SQLSELECT * FROM V$PGASTAT WHERE NAME=’缓存命中百分比’;
或者从OEM的图形界面查看
我们可以看一个视图得到Oracle的推荐值:
8)共享区字典缓存区命中率
计算公式:SUM(gets – getmisses – usage -fixed)/SUM(gets)
命中率应大于0.85
SQLselect sum(gets-getmisses-usage-fixed)/sum(gets) from v$rowcache;
9)数据高速缓存区命中率
计算公式:1-(物理读数/(db块获取数+一致性获取数))
命中率应大于0.90 为最佳
SQLselect name,value from v$sysstat where name in (‘物理读取’,’数据库块获取’,’一致获取’);
10)共享区库缓存区命中率
计算公式:SUM(pins – reloads)/SUM(pins)
命中率应大于0.99
SQLselect sum(pins-reloads)/sum(pins) from v$librarycache;
11)检测回滚段的争用
SUM(waits) 值应小于SUM(gets) 值的1%
SQLselect sum(gets),sum(waits),sum(waits)/sum(gets) from v$rollstat;
12)检测回滚段收缩次数
SQLselect 名称,从v$rollstat, v$rollname 缩小,其中v$rollstat.usn=v$rollname.usn;
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/198884.html
用户评论
_心抽搐到严重畸形っ°
终于找到了!之前一直在找类似文章,对Oracle性能调优一直比较好奇。这篇笔记写的真好,感觉很官方又实用,刚好我最近也在学习这些方面
有10位网友表示赞同!
神经兮兮°
这位博主太厉害了!这种深入浅出的总结真是一绝,一下子把Oracle命中率的概念和调优技巧清晰地解释了。之前一直摸索,现在看这篇文章觉得明明白白了
有13位网友表示赞同!
秒淘你心窝
感觉笔记里有些内容比较专业,我还没学过这些基础知识,估计需要先再学习一下 Oracle 相关的内容再说。
有20位网友表示赞同!
青衫故人
命中率这个概念确实很重要,但我没发现实际的调优步骤太明显,希望文章后续能详细阐述一些具体的工具和方法
有16位网友表示赞同!
毒舌妖后
很实用!感谢博主分享这种珍藏笔记,对我的学习帮助很大。期待后续博文继续分享更多 Oracle 知识!
有17位网友表示赞同!
珠穆郎马疯@
这篇文章感觉有点像教材的感觉,虽然整理的非常全面,但是缺乏了一些案例分析,能更加生动直观地展示一些调优效果的话,会更让人印象深刻。
有10位网友表示赞同!
心已麻木i
文章写的很棒,很感谢博主分享这些宝贵经验!Oracle数据库是我常用的工具之一,这篇笔记让我受益匪浅,以后学习调优时可以参考这一份总结。
有17位网友表示赞同!
寒山远黛
我感觉这个命中率的概念有点抽象,希望能通过一些案例来更加清晰地解释,方便我理解和运用到实际的场景中。
有19位网友表示赞同!
开心的笨小孩
文章总结的好,很系统化地介绍了各个命中率的不同含义以及调优方法,值得收藏。
有11位网友表示赞同!
一生只盼一人
这个标题太吸引人了,不过当我打开后发现只有总结没有具体案例分析,有点失望呢!希望博主能更新一些案例分享。
有16位网友表示赞同!
纯情小火鸡
笔记里提到了很多工具和技巧,我需要慢慢消化一下,感觉 Oracle 的调优还是挺复杂的。
有18位网友表示赞同!
病态的妖孽
最近也在学习 Oracle,这篇笔记很有帮助,让我对Oracle中各个命中率有了更深入的理解!
有16位网友表示赞同!
此刻不是了i
这篇总结文章太棒了,以后遇到Oracle相关问题可以再来参考,真是太实用了!
有11位网友表示赞同!
惯例
说实话,我没学过很多 Oracle 的东西,这篇文章对我来说有点过于专业了,希望博主能写一些入门级的文章。
有8位网友表示赞同!
搞搞嗎妹妹
非常感谢博主分享这篇珍藏笔记!Oracle 真是个强大的数据库系统,希望能通过这款整理学习到更多调优的技巧
有6位网友表示赞同!
败类
这个总结涵盖的内容比较全面,对 Oracle 调优有很大的帮助。期待博主继续分享更多深入的知识!
有9位网友表示赞同!
孤岛晴空
我很注重细节,所以这篇笔记里的每个词语都仔细读了一遍,感觉确实非常详细!希望博主以后也会写一些实践方面的文章
有10位网友表示赞同!
凉月流沐@
这篇文章确实很有帮助,让我对 Oracle 中各个命中率有了更清晰的认识。希望以后能学习到更多实际操作技巧!
有7位网友表示赞同!