一次優化

westzq1984發表於2010-01-06

今天去客戶那巡檢,客戶反映前幾個月,CPU佔用率基本在50%左右,100%的時間也很短。而從12月開始,CPU幾乎在80%以上,長時間維持100%,CPU曲線圖上看幾乎沒有波峰波谷

從客戶那拿到了9-12月的STATSPACK報告,發現12月邏輯讀增加很多。看了下TOP SQL,發現了貓膩,前3個月的查詢時間範圍為月初到月末,而12月,基本都是年初到年末。
這個系統沒有用分頁,而且資料量也不小,一個SQL取幾十萬資料是常事。

在alert日誌中,發現大量的ORA-01555錯誤,報錯時執行的時間基本都在2個小時。這些SQL也是STATSPACK中的TOP SQL
SQL對應的表上都有合適的索引,但是這些SQL都沒有選擇正確的索引。
觀察了下,這些SQL都是from檢視,而且這些檢視的結構都相同,都是
  select /*+rule */ * from A,B where a.a1=b.b1 and xxxxxx
  union all
  select /*+rule */ * from C,B where c.c1=b.b1 and xxxxxx
  union all
  select /*+rule */ * from C,B where c.c1=b.b1 and xxxxxx
這樣的,估計這個RULE有問題,去掉測試了下,執行計劃正常,以前執行2個小時不出結果的,1分鐘以內能出來。

中午的時候,去掉了相關檢視的RULE提示,下午觀察,CPU利用率降低到60%,沒有高於80%的情況,在一個可以接受的範圍內。

問了下客戶,他們這個系統是從8i升級上來的,估計這些RULE提示都是8i遺留下來的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8242091/viewspace-624493/,如需轉載,請註明出處,否則將追究法律責任。

相關文章