關於計算buffer cache hit rate的精確演算法
在系統執行過程中,如果我們發現Cache hit rate過小,或者我們通過觀察statspack中的Instance Efficiency Percentages這部分呢,我們會發現Buffer Hit%的值很低,通常這就是在暗示你要增加DB_CACHE_SIZE了
1.通常的計算方法
可能大家都知道我們一般都是通過以下的公式來計算我們的buffer hit%的
Cache hit rate=((consistent_gets + db_block_gets) - physical_reads) /
(consistent_gets + db_block_gets)
2.進一步更精確的結果,我們需要考慮direct reads
如果Buffer hit%為85%,那麼如果只是這樣簡單的按照上面的公式,計算得到85%的命中率,並不意味著miss rate=15%,因為15%中包括我們通常所說的direct reads。
direct reads一般發生在parallel scans和 reads from temporary tablespaces等情況下。blocks被直接讀入私有PGA中的buffer,而沒有經過SGA中的buffer cache.所以我們不應該把其算入內.
所以,如果我們通過查詢v$sysstat來計算buffer hit%,可以去掉direct物理讀部分,這樣更新後的公式就是
Buffer hit = 1 - ((physical reads - physical reads direct - physical reads direct (lob)) /
(db block gets + consistent gets - physical reads direct - physical reads direct (lob))
另外,v$sysstat中的consistent_gets的值也有所誇大,可以累加以下4項得到:
no work - consistent read gets
cleanouts only - consistent read gets
rollbacks only - consistent read gets
cleanouts and rollbacks - consistent read gets
其實最好的方法是直接訪問V$BUFFER_POOL_STATISTICS而不是v$sysstat,其中的資料都是排除了direct reads的結果。
比如
V$BUFFER_POOL_STATISTICS.physical_reads=v$sysstat 的'physical reads'- 'physical reads direct'- 'physical reads direct (lob)'
這樣可以直接執行下面的語句來計算我們的Buffer Hit%:
select name, ((consistent_gets + db_block_gets) - physical_reads) /
(consistent_gets + db_block_gets) * 100 "Hit Ratio%"
from v$buffer_pool_statistics
where physical_reads > 0;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12361284/viewspace-154924/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於PHP精確計算模組PHP
- Buffer Cache Hit Ratio
- [Oracle Script] Buffer Cache Hit RatioOracle
- why Buffer Cache Hit Ratio < 0
- page cache與buffer cache的關係
- 關於ORACLE裡的buffer cache 的命中率Oracle
- 白繕大師關於buffer cache系列
- 演算法題:如何判斷計算的 π 值是否精確?演算法
- Oracle如何精確計算row的大小Oracle
- PHP浮點數的精確計算BCMathPHP
- buffer cache與相關的latch等待事件事件
- Buffer Cache以及buffer busy waits/gc相關事件AIGC事件
- js精確計算浮點數相加JS
- javascript浮點數精確計算程式碼JavaScript
- 資料讀取之邏輯讀簡單解析--關於BUFFER CACHE
- Buffer Cache 原理
- cache buffer chainAI
- 計算機buffer和cache的區別?linux運維學習知識計算機Linux運維
- JavaScript浮點數加減乘除精確計算JavaScript
- 關於cache_buffer_lru_chain的疑問,知道的給小弟解答一下。AI
- IO之核心buffer----"buffer cache"
- buffer與cache的區別
- Buffer cache的執行原理
- Buffer和Cache的區別
- Buffer 與 Cache 的區別
- Cache 和 Buffer的區別
- Oracle Buffer Cache原理Oracle
- Oracle database buffer cacheOracleDatabase
- CACHE BUFFER CHAINSAI
- Database Buffer Cache (79)Database
- library cache及buffer cache中如何利用hash演算法得到hash值演算法
- 在Java中實現浮點數的精確計算 (轉)Java
- 【Cache】將常用的“小表”快取到Buffer Cache快取
- Linux Buffer/Cache 的區別Linux
- 轉_Buffer Cache的原理及使用
- buffer 與cache 的區別2
- Oracle Cache Buffer ChainsOracleAI
- linux cache and buffer【轉】Linux