buffer busy waits與rac cluster wait之間的聯絡
之前遇到的buffer busy waits的問題在所做的一些變動後,情況下降許多,但問題依然存在。[@more@]因為我們的環境中遇到的buffer busy waits為data block型別,識別碼為220,讓人直接想到的就是,高併發的DML是導致這個環境buffer busy waits的主因。(額外附註一下:當塊被讀到sga後,若有session想讀取或者修改它,必先獲取cache buffers chains鎖存器以遍歷該緩衝區鏈而找到所必需的緩衝區頭,然後,根據session所請求的類別來以共享模式或者獨佔模式來pin住該緩衝區頭,然後才可以進行讀取或者修改,pin住後然後釋放cache buffer chains鎖存器)。
至於出現的global null to x 和global cr request之類的cluster wait,跟我們的應用較為相關,頻繁的相同的DML動作分佈在三個不同的節點(RAC環境為4節點),當修改其中一個節點SGA裡的一個塊後,其他節點同樣有這個動作,9i的cache fusion會根據其他請求節點的GCS請求生成pi塊到對應請求節點,因為session的pin動作是1:1的(pin:物件塊),且9i預設pi塊是6個,所以,這是目前環境中造成cluster wait的主要原因,再深入分析一下,這也跟block_size有較大原因,若一個塊中含有的行不多,就算有此類buffer busy waits 220識別碼的等待,也不會是非常突出的。不行的是,這個db環境的db_block_size不知是誰設的,大小為16K。
解決方法:
1、減少塊中的行數(可增加pctfree,若塊大小較大,應該收效甚微)
2、將client連線節點的操作進行分類,比如將那些造成併發update的應用都連線至同一個節點,當然,這樣對rac的failover挑戰又提高到新的一個層面,比如若這個節點crash掉,整個業務的流程基本也被破壞掉。
至於出現的global null to x 和global cr request之類的cluster wait,跟我們的應用較為相關,頻繁的相同的DML動作分佈在三個不同的節點(RAC環境為4節點),當修改其中一個節點SGA裡的一個塊後,其他節點同樣有這個動作,9i的cache fusion會根據其他請求節點的GCS請求生成pi塊到對應請求節點,因為session的pin動作是1:1的(pin:物件塊),且9i預設pi塊是6個,所以,這是目前環境中造成cluster wait的主要原因,再深入分析一下,這也跟block_size有較大原因,若一個塊中含有的行不多,就算有此類buffer busy waits 220識別碼的等待,也不會是非常突出的。不行的是,這個db環境的db_block_size不知是誰設的,大小為16K。
解決方法:
1、減少塊中的行數(可增加pctfree,若塊大小較大,應該收效甚微)
2、將client連線節點的操作進行分類,比如將那些造成併發update的應用都連線至同一個節點,當然,這樣對rac的failover挑戰又提高到新的一個層面,比如若這個節點crash掉,整個業務的流程基本也被破壞掉。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14517718/viewspace-1007957/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [摘錄]Oracle Wait Interface之Buffer busy waits事件OracleAI事件
- GC Buffer Busy Waits in RAC: Finding Hot BlocksGCAIBloC
- Oracle Buffer Busy WaitsOracleAI
- buffer busy waits 平均等待時間AI
- 【等待事件】buffer busy waits事件AI
- 【TUNE_ORACLE】等待事件之“buffer busy waits”Oracle事件AI
- buffer busy wait 解析AI
- Buffer Busy Waits深入分析AI
- buffer busy waits引起的會話突增AI會話
- oracle buffer busy waits等待的含義OracleAI
- buffer busy wait 的深度剖析AI
- Buffer busy waits/read by other sessionAISession
- buffer busy waits你誤解了嗎?AI
- wait event:gc buffer busyAIGC
- Buffer Busy Wait小結AI
- zt_buffer busy waitAI
- Buffer Cache以及buffer busy waits/gc相關事件AIGC事件
- Buffer Busy Waits是怎麼產生的?AI
- buffer cache實驗7-buffer busy waits-完成AI
- 等待模擬-BUFFER BUSY WAITAI
- buffer busy wait 等待事件說明AI事件
- Oracle Dba必須瞭解的buffer busy waits等待OracleAI
- update/select也可能產生buffer busy waits。AI
- buffer busy wait 等待事件說明(轉)AI事件
- 模擬產生CBC LATCH與buffer busy wait等待事件AI事件
- 等待事件_buffer_busy_waits_and_read_by_other_session(1)事件AISession
- 等待事件_buffer_busy_waits_and_read_by_other_session(2)事件AISession
- 等待事件_buffer_busy_waits_and_read_by_other_session(3)事件AISession
- 等待事件_buffer_busy_waits_and_read_by_other_session(4)事件AISession
- rac 遭遇GC BUFFER BUSY 處理思路GC
- 效能調整一則:buffer busy waits導致主要issueAI
- Oracle資料庫buffer busy wait等待事件 (2)Oracle資料庫AI事件
- Oracle資料庫buffer busy wait等待事件 (1)Oracle資料庫AI事件
- RAC遇到GC Buffer Busy的解決方法2GC
- RAC遇到GC Buffer Busy的解決方法1GC
- [20161214]關於Buffer Busy Waits.txtAI
- [20150122]buffer busy waits特例.txtAI
- 簡單探討JavaScript 與 TypeScript之間的聯絡JavaScriptTypeScript