【问题标题】:how to increase cache hit ratio in Oracle database?如何提高Oracle数据库中的缓存命中率?
【发布时间】:2016-01-04 07:17:05
【问题描述】:

我运行的是 Oracle 11g 第 2 版。如何手动提高缓存命中率?有没有我可以运行的命令来增加它?

【问题讨论】:

    标签: database oracle performance oracle11g database-administration


    【解决方案1】:

    Source

    许多 DBA 尽最大努力获得 99% 或更高的缓冲区缓存命中率,但很快发现他们的数据库性能并没有随着命中率的提高而提高。

    这是获取数据库当前命中率的查询:

    SQL> -- Get initial Buffer Hit Ratio reading...
    SQL> SELECT ROUND((1-(phy.value / (cur.value + con.value)))*100,2) "Cache Hit Ratio"
      2    FROM v$sysstat cur, v$sysstat con, v$sysstat phy
      3   WHERE cur.name = 'db block gets'
      4     AND con.name = 'consistent gets'
      5     AND phy.name = 'physical reads'
      6  /
    
    Cache Hit Ratio
    ---------------
             90.75
    

    但是,为了说明这个数字是多么的无意义,让我们人为地增加它:

    SQL> -- Let's artificially increase the buffer hit ratio...
    SQL> DECLARE
      2    v_dummy dual.dummy%TYPE;
      3  BEGIN
      4    FOR I IN 1..10000000 LOOP
      5      SELECT dummy INTO v_dummy FROM dual;
      6    END LOOP;
      7  END;
      8  /
    
    PL/SQL procedure successfully completed.
    

    让我们看看发生了什么:

    SQL> -- Let's measure it again...
    SQL> SELECT ROUND((1-(phy.value / (cur.value + con.value)))*100,2) "Cache Hit Ratio"
      2    FROM v$sysstat cur, v$sysstat con, v$sysstat phy
      3   WHERE cur.name = 'db block gets'
      4     AND con.name = 'consistent gets'
      5     AND phy.name = 'physical reads'
      6  /
    
    Cache Hit Ratio
    ---------------
              99.94
    

    结论:甚至不必费心尝试调整缓冲区命中率!

    现在有更好的调音方法。 Oracle 等待接口 (OWI) 提供了确切的详细信息。不再需要依赖模糊无意义的计数器。

    【讨论】:

      猜你喜欢
      • 2022-08-12
      • 1970-01-01
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多