低效sql導致DB負載很高

zecaro發表於2010-12-28

        今天,想起之前在資料庫上新上了一個schema,當時說負載可能比較大,正好有空了,所以,上去看看(應該有一些監控負載手段比較好)。

        看了一下系統負載,確實高了一些,CPU比較繁忙,io等待有一些,但不多。

        然後登陸db,檢視當前當前的一些sql,發現新上的schema有十幾個session都是同一條sql。

        仔細看這條sql,很簡單,卻用了2個子查詢。想要得到執行目前這條sql最後的結果,完全不用子查詢,還有一個沒有必要的全表排序。所以看了這條sql,我也不明白到底要查什麼,才會這樣寫sql。這個目前這個表還不大,30M+,但CPU頂不住這樣頻繁的排序。

        然後負載又升高了,基本上每個CPU達到90%,因為之前早一些的時候,應該還沒到高峰時期。vmstat在running上堵了不少。這個時候登陸系統敲命令都能明顯感覺到“一卡一卡”地。

        後來看了下awr報表,基本就是這條sql的問題。

        補充,後來詢問得知寫那條sql的老兄已經離職了,沒有人再能解釋為什麼會這麼寫,sigh~~

遺留問題:

1 最好能想辦法監控負載

2 sql的好壞會極大地影響db效能,db可以調整引數,但是從sql上著手,更本質一些。之前也經常遇到說速度慢之類的問題,基本就是sql太爛。一開始的表設計也很重要,目前我還沒看過相關內容,先記下。

3 awr報表要系統的看一下說明。平時多看看awr。考慮每天自動生成awr。

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

相關文章