關於ORACLE裡的buffer cache 的命中率
昨天做技術分享被問到命中率的問題,今天有一個有意思的例子:
SQL1:執行1百萬次 但是這個SQL加起來其實就是在10個distinct資料塊上不厭其煩的查詢
SQL2,SQL3,SQL4,SQL5,SQL6的總和執行了1000次 但是是在10000個distinct的資料塊上,由於這些SQL讀的塊比較離散,大部分都產生的是物理讀。
1000000
命中率=------------------=99.9%(我瞎算的,大概接近)
1000000+10000
看到了吧,我們一共有6個SQL,其中一個SQL1的命中率高達100%,其餘SQL的命中率接近0%
但是整體的命中率卻是99.9%。
想說的是,命中率很多時候會掩蓋問題,只能作為一個輔助的參考指標。就我上面舉得例子,我們看AWR的命中率可能覺得系統沒什麼問題,覺得系統的cache最夠大了,命中率最夠高了
而真實的情況是,大部分的SQL命中率都很差。可能很多SQL存在最佳化的必要,或者CACHE有擴容的需求。
現在ORACLE都根據OWI(等待事件)這種更科學的診斷來判斷資料庫問題了,相信大家很熟悉OWI了,命中率只能作為一個輔助的參考指標。
但是整體的命中率卻是99.9%。
想說的是,命中率很多時候會掩蓋問題,只能作為一個輔助的參考指標。就我上面舉得例子,我們看AWR的命中率可能覺得系統沒什麼問題,覺得系統的cache最夠大了,命中率最夠高了
而真實的情況是,大部分的SQL命中率都很差。可能很多SQL存在最佳化的必要,或者CACHE有擴容的需求。
現在ORACLE都根據OWI(等待事件)這種更科學的診斷來判斷資料庫問題了,相信大家很熟悉OWI了,命中率只能作為一個輔助的參考指標。
關於命中率不科學的其他例子:
一個SQL頻繁的做全表掃描(完全可以走索引的),由於CACHE較大,這個表完全可以被CACHE在記憶體裡,那麼雖然從報告裡看到的命中率很高,但是其實這個SQL的最佳化空間是極大的,命中率也掩蓋了這個問題。
一個SQL頻繁的做全表掃描(完全可以走索引的),由於CACHE較大,這個表完全可以被CACHE在記憶體裡,那麼雖然從報告裡看到的命中率很高,但是其實這個SQL的最佳化空間是極大的,命中率也掩蓋了這個問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-763491/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- page cache與buffer cache的關係
- Cache 和 Buffer 的區別在哪裡?
- Oracle Buffer Cache原理Oracle
- Oracle database buffer cacheOracleDatabase
- 白繕大師關於buffer cache系列
- Oracle Cache Buffer ChainsOracleAI
- buffer cache與相關的latch等待事件事件
- 關於計算buffer cache hit rate的精確演算法演算法
- Oracle 11g buffer cache的設定Oracle
- [Oracle Script] Buffer Cache Hit RatioOracle
- 【BUFFER】Oracle buffer cache之 latch 學習記錄Oracle
- oracle buffer cache管理機制_buffer cache dump與lru機制小記Oracle
- Buffer Cache以及buffer busy waits/gc相關事件AIGC事件
- Oracle Buffer Cache原理總結(一)Oracle
- Oracle Buffer Cache原理總結(二)Oracle
- 關於oracle裡的process總結Oracle
- 關於cache_buffer_lru_chain的疑問,知道的給小弟解答一下。AI
- buffer與cache的區別
- Buffer cache的執行原理
- Buffer和Cache的區別
- Buffer 與 Cache 的區別
- Cache 和 Buffer的區別
- Oracle中flush buffer cache和x$bhOracle
- 【Cache】將常用的“小表”快取到Buffer Cache快取
- 資料讀取之邏輯讀簡單解析--關於BUFFER CACHE
- Buffer Cache 原理
- cache buffer chainAI
- Linux Buffer/Cache 的區別Linux
- 轉_Buffer Cache的原理及使用
- buffer 與cache 的區別2
- 計算mysql buffer的命中率及使用率MySql
- 關於快取命中率的幾個關鍵問題!快取
- 關於mysql的query_cacheMySql
- Oracle中Buffer Cache記憶體結構Oracle記憶體
- Oracle10g data buffer cache的記憶體結構Oracle記憶體
- IO之核心buffer----"buffer cache"
- MySQL監控InnoDB Buffer Pool命中率MySql
- linux cache與buffer的區別Linux