1
我運行Oracle 11g第2版。如何手動增加緩存命中率?有沒有我可以運行的命令來增加它?如何提高Oracle數據庫中的緩存命中率?
我運行Oracle 11g第2版。如何手動增加緩存命中率?有沒有我可以運行的命令來增加它?如何提高Oracle數據庫中的緩存命中率?
許多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)提供確切的細節。不再需要依賴模糊無意義的計數器。