cache buffers chains vs cache buffers lru chain
http://luckysea.itpub.net/post/5481/323246
cache buffers chains當一個資料塊讀入sga區,相應的buffer header會被放置到hash列表上,我們稱其這hash chains,chain在中文的意為鏈條或串的意思,表達就是關連性.如果一個程式想訪問或修改hash chain上的block,它首先要獲得"cache buffers chains" latch。
cache buffers chains latch等待高大體有兩個方面:
1、寫的比較差的sql
cache buffers chains latch很大程度與邏輯讀有關,所以要觀注v$sql中BUFFER_GETS/EXECUTIONS大的語句。
同時每一個邏輯讀需要一個latch get 操作及一個cpu操作,這樣的sql也會很耗cpu資源。
2、熱塊
即多個程式讀同一個或幾個block的狀況,這要考慮應用的設計了,為什麼會出現這樣的情況,改善可以這樣:
聯合v$session_wait及x$bh檢視找到相應的熱塊程式最佳化
示例sql
程式碼:--------------------------------------------------------------------------------
SELECT A.HLADDR, A.FILE#, A.DBABLK, A.TCH, A.OBJ, B.OBJECT_NAME
FROM X$BH A, DBA_OBJECTS B
WHERE (A.OBJ = B.OBJECT_ID OR A.OBJ = B.DATA_OBJECT_ID)
AND A.HLADDR = &P1RAW
UNION
SELECT HLADDR, FILE#, DBABLK, TCH, OBJ, NULL
FROM X$BH
WHERE OBJ IN (SELECT OBJ
FROM X$BH
WHERE HLADDR = &P1RAW
MINUS
SELECT OBJECT_ID
FROM DBA_OBJECTS
MINUS
SELECT DATA_OBJECT_ID FROM DBA_OBJECTS)
AND HLADDR = &P1RAW
ORDER BY 4;--------------------------------------------------------------------------------
改變熱塊的途徑就是儘量讓一個block存少一些資料,比如加大pctfree引數.同時化化應用分散熱塊很重要。
cache buffers lru chain
這也是一個記憶體結構,用於標識哪些buffer操作狀態的,比如哪些是"髒資料"需要DBWn回寫到資料檔案。可以適當加大_DB_BLOCK_LRU_LATCHES及提升DBWn的寫速度得以解決。
cache buffers lru chain多也是bad sql語句的一個徵兆,表明了buffer cache操作很頻繁。比如做全表掃描或重複的掃描一個選擇性很差的索引都會造成cache buffers lru chain的競爭。透過v$session_wait,v$session,v$sqltext找到相關的語句進行最佳化也很必要。
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10599713/viewspace-1004135/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- cache buffers chains and cache buffers lru chainsAI
- cache buffers lru chainAI
- cache buffers LRU chain latchAI
- 等待事件_cache_buffers_lru_chain_latch事件AI
- buffer cache實驗6-latch:cache buffers lru chainsAI
- latch: cache buffers chainsAI
- latch free(cache buffers chain)AI
- latch:cache buffers chains案例AI
- 用於排查cache buffers chainsAI
- Cache Buffers chains,存在共享模式?AI模式
- buffer cache實驗5-latch:cache buffers chainAI
- 深入理解latch: cache buffers chainsAI
- Trouble shooting latch: cache buffers chainsAI
- ORACLE等待事件latch: cache buffers chainsOracle事件AI
- 等待事件_cache_buffers_chains_latch事件AI
- latch:cache buffers chains解決步驟AI
- latch:cache buffers chains的優化思路AI優化
- 模擬cache buffers chains與library cache pin等待事件AI事件
- latch:cache buffers chains的最佳化思路AI
- latch: cache buffers chains---AWR實戰分析AI
- 熱點塊競爭和解決--cache buffers chainsAI
- latch: cache buffers chains故障處理總結(轉載)AI
- 解決一例latch:cache buffers chains小記AI
- 一次latch cache buffers chains問題的處理AI
- 0821Cache Buffers chains與共享模式疑問4AI模式
- 0330Cache Buffers chains與共享模式疑問AI模式
- 處理 latch_cache_buffers_chains等待事件一例AI事件
- 0330Cache Buffers chains與共享模式疑問2AI模式
- 1104Cache Buffers chains與共享模式疑問3AI模式
- 1104Cache Buffers chains與共享模式疑問4AI模式
- buffer busy waits, latch cache buffers chains, read by other session區別AISession
- 使用了索引就一定能避免cache buffers chains爭用嗎索引AI
- latch: cache buffers chains-熱塊的簡單模擬實驗AI
- cache buffer lru chain latch等待事件AI事件
- Bug 3797171 cache buffers chains latch contention increased in 10g-3797171.8AI
- 【恩墨學院】深入剖析:關於cache buffers chains的經典案例處理詳解?AI
- cache buffer chainAI
- CACHE BUFFER CHAINSAI