码迷,mamicode.com
首页 > 数据库 > 详细

Oracle数据库关于命中率的查询语句总结

时间:2015-04-22 18:45:36      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:oracle   命中率   

1) Library Cache的命中率

公式:Library Cache Hit Ratio=SUM(PINHITS)/SUM(PINS)

SELECT SUM(PINHITS)/SUM(PINS) FROM V$LIBRARYCACHE;

命中率不能低于99%,否则需要考虑是否受共享池大小,绑定变量,cursor_sharing等因素的影响。

SELECT NAME,VALUE FROM V$PARAMETER WHERE NAME=‘cursor_sharing‘


2) Shared Pool的使用率

公式:Shared Pool Hit Ratio=(100-Free memory/shared_pool_size*100)%

如果数据库采用AMM方式管理内存使用以下语句获取Shared Pool大小:

SELECT POOL,ROUND(SUM(BYTES)/1024/1024,2) FROM V$SGASTAT where POOL=‘shared pool‘ group by POOL;

如果是采取Manual方式管理内存则:

SELECT NAME,VALUE FROM V$PARAMETER WHERE NAME=‘shared_pool_size‘;

查询1:

SELECT 100 - ROUND((SELECT ROUND(SUM(BYTES) / 1024 / 1024, 2) BYTES
                      FROM V$SGASTAT
                     WHERE NAME = ‘free memory‘
                       AND POOL = ‘shared pool‘
                     GROUP BY POOL) / ROUND(SUM(BYTES) / 1024 / 1024, 2),
                   4) * 100 || ‘%‘ RATIOS
 FROM V$SGASTAT
 where POOL = ‘shared pool‘
 GROUP BY POOL

查询2:

SELECT 100 - ROUND(B.BYTES / ROUND(SUM(A.BYTES) / 1024 / 1024, 2),4)*100 || ‘%‘ RATIOS
  FROM V$SGASTAT A,
       (SELECT POOL,ROUND(SUM(BYTES) / 1024 / 1024, 2) BYTES
          FROM V$SGASTAT
         WHERE NAME = ‘free memory‘ AND POOL=‘shared pool‘ GROUP BY POOL) B
 where A.POOL = ‘shared pool‘ GROUP BY B.BYTES,A.POOL

共享池使用率应稳定在75%-90%间,过小则浪费,过大说明内存不足或语句重用性不高。

本文出自 “LinuxOracle” 博客,请务必保留此出处http://onlinekof2001.blog.51cto.com/3106724/1637192

Oracle数据库关于命中率的查询语句总结

标签:oracle   命中率   

原文地址:http://onlinekof2001.blog.51cto.com/3106724/1637192

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!