回答

3

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)提供確切的細節。不再需要依賴模糊無意義的計數器。

相關問題