RAC遇到GC Buffer Busy的解決方法1
一朋友求助說他的ORACLE RAC伺服器負載不是很穩定,時高時低,且沒有任何規律。摘取負載高峰時間的一段日誌來分析,最大的等待如下:
^LTop SQL Statements DB/Inst: BOSSCENT/bosscent1 (May 19 13:17 to 13:32) SQL ID Planhash % Activity Event % Event ------------- ----------- ---------- ------------------------------ ---------- f9rf7a8cg40nt N/A 9.14 gc buffer busy 2.53 insert into test(id,user_id,point_num,time,point_gettype,sex) values( :1,:2,:3,sysdate,:4,:5) N/A 9.14 gc current block busy 2.22 insert into test(id,user_id,point_num,time,point_gettype,sex) values( :1,:2,:3,sysdate,:4,:5) N/A 9.14 gc current block 2-way 1.42 insert into test(id,user_id,point_num,time,point_gettype,sex) values( :1,:2,:3,sysdate,:4,:5) bs6z6hs8sum53 1007834728 8.09 gc buffer busy 2.16 update test set id=:1 where id=:2
明顯看到出現大量gc buffer busy等待,與單例項不同,在RAC環境中,由於多節點的原因,會因為節點間的資源爭用產生GC類的等待,而這其中,GC Buffer Busy Waits又是最為常見的,我們看下ORACLE官方對這個等待事件的解釋:
gc buffer busy:
This wait event,also known as global cache buffer busy prior to Oracle 10g,specifies the time the remote instance locally spends accessing the requested data block. This wait event is very similar to the buffer busy waits wait event in a single-instance database 。
那麼如何解決gc buffer busy帶來的效能問題?一般有兩種方法:
一、分割應用
就是指把出現gc buffer busy等待的SQL,單獨配置一個資料來源,在執行的時候指定到叢集中的某一個例項。在執行產生gc buffer busy的SQL的時候,使用這個資料來源。
這樣的缺點是,如果指向一個單例項,這些操作負載太高的話,一個例項可能會抗不住。
二、修改表底層結構
在問題表上加入一個欄位inst_id,也就是例項編號,這個欄位作為主分割槽欄位,按照這個分割槽做範圍分割槽。並且每次插入的時候給這個欄位賦一個常量,也就是例項編號。
這樣的缺點是,需要修改表結構,風險很大,而且如果以後擴充套件節點的話,還需要重新改表結構。
兩種方法各有長短,需要根據實際情況選擇,不過我個人還是傾向於第一種方法。
本文轉自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13879334/viewspace-1035343/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- GC Buffer Busy Waits in RAC: Finding Hot BlocksGCAIBloC
- gc buffer busyGC
- Buffer Cache以及buffer busy waits/gc相關事件AIGC事件
- gc buffer busy acquire問題處理GCUI
- 一次gc buffer busy問題的診斷GC
- Oracle Buffer Busy WaitsOracleAI
- buffer busy waits引起的會話突增AI會話
- oracle buffer busy waits等待的含義OracleAI
- Buffer Busy Waits是怎麼產生的?AI
- gc current/cr block busy等待事件GCBloC事件
- 遇到問題的解決方法
- buffer busy wait 等待事件說明(轉)AI事件
- [20180305]手工模擬buffer busy wait.txtAI
- 【TUNE_ORACLE】等待事件之“buffer busy waits”Oracle事件AI
- python學習遇到的困難和解決方法1Python
- 呼叫System.gc沒有立即執行的解決方法GC
- GO Modules的理解和遇到的問題解決方法Go
- 部署專案遇到的mysql問題以及解決方法MySql
- 使用nodeAPI時遇到非同步問題的解決方法API非同步
- Selenium爬蟲遇到超時TimeOut問題的解決方法爬蟲
- 解決gc current request等待事件GC事件
- java.nio.Buffer.filp()方法的用法詳解Java
- mysql登入遇到ERROR 1045問題解決方法MySqlError
- ORACLE匯入遇到ORACLE錯誤959解決方法Oracle
- ORACLE RAC TO RAC DG搭建過程中可能遇到的問題Oracle
- MAC 安裝 VMAF 遇到的問題及解決方法記錄Mac
- Hanlp配置自定義詞典遇到的問題與解決方法HanLP
- 【ASK_ORACLE】因process用盡導致的rac重啟的解決方法Oracle
- vs code寫python程式碼時遇到藍色波浪線“word“: Unknown word.cSpell[1,1]解決方法Python
- win10提示您已遇到關鍵問題的解決方法Win10
- Chrome安裝sci-hub外掛遇到的問題解決方法Chrome
- PHP初學者最常遇到的8個錯誤及解決方法PHP
- 更新macOS Monterey後遇到的各種Bug問題及解決方法Mac
- rac新增節點容易遇到的問題
- [20201231]RAC buffer states: XCUR, SCUR, PI,CR.txt
- win10系統提示遇到錯誤需要重啟的解決方法Win10
- Oracle優化案例-Bug 5552515引起的buffer busy waits和表物理讀(二十四)Oracle優化AI
- 玩Deno遇到問題的解決方案
- 清理buffer/cache/swap的方法梳理