假設公司內部的會計人員跟您抱怨,會計系統從今天早上起變得很慢。假設這個問題跟使用者的電腦環境沒關係(也就是電腦本身的負載正常),那您有幾個可能的方向去檢查:
1.目前公司同時使用會計系統的人數。
2.會計系統主機的負載。
3.目前公司內部網路流量。
4.資料庫系統本身的負載。
5.資料庫系統主機本身的負載。
找出解決問題的方法論
當然,檢查的項目根據個人的經驗,可多可少,但是一定會有個共通點,也就是會跟眼前的問題有關係。我剛舉例的幾個檢查項目,涵蓋了應用系統、網路系統、以及 資料庫系統。您一定是一項一項的去察看相關系統記錄,排除掉不可能的項目後,然後再針對剩下的項目,收集更詳盡的資料做為佐證、逐漸收歛,最後找到發生問 題的真正原因。
也就是說,一個有效解決問題的方式,是系統人員本身必須要先有個解決問題的方法論,資料數據只是提供佐證而已。這跟漫無目的收集一堆資料、再來分析的做法相比較截然不同。後者會有幾項缺點:
1.收集的資料可能沒用。
2.從資料中毫無頭緒地找線索,有可能因為資料過多、而忽略了真正引起問題的資訊,而且這種做法也很浪費時間。
3.專注於片段的資料,很難看出各片段資料之間的關係,無法全面做考量,在判斷上容易流於武斷而誤判。
我個人認為,第三項缺點,往往是問題解決過程中的致命傷,因為它會讓整個解決方向完全錯誤。
讓我們回到上個例子。假設您己經把問題的可能原因縮小到資料庫系統上了。這時候您利用各種可能的工具,察覺到資料庫系統的確正在執行許多不同的SQL指令, 其中包括了資料異動以及查詢,因此您直覺地認定資料庫系統本身負載過重,造成會計系統效能的低落。
所以接下來的解決方向,就是找出耗費資源最多的SQL指令,從中看看能不能針對效能做最佳化,甚至中斷這些SQL指令的執行,暫時紓緩系統的負荷。但是有可能真正的原因,是在同一台主機上,另一個應用程式的行 程(Process)佔用了七成的CPU運算資源,而資料庫系統本身雖然執行了相當多的SQL指令,卻只佔了兩成不到的CPU資源。換句話說,最需要解決 的,是先停掉佔用最多CPU資源的行程,而不是花時間鑽研資料庫系統的問題。這就是沒有先做全面性的分析可能的後果。(文轉下頁)
繼續閱讀: >>

1.不想再從業IT的人 於 2008/06/03 12:08 回應
你講的是個大方向,以我的了解(我是個DBA),一般資料庫的調校分為四個層次1.硬體(作業系統)
2.db instance
3.db object
4.db sql tuning
我的日常工作,就是產出每日的效能報表來做判斷
在作業系統層,你當然需要看memory, cpu的使用狀況
在db instance 層,每個資料庫都有自己的數據分析方法
在db object 層,通常的sql 語法大概都是analyze table, index等,然後去找出各物件目錢在
storage的狀況,表格資料是否分散,index是否歪斜或者leaf node太深,都需要做重整的考量
至於sql tune就是看執行計畫,因為sql 是一種宣告式的語言,你要處理資料,只需要告訴
資料庫系統,你要處理那些欄位,那些表格,需不需要排序或做運算,其它的事情,資料庫系統會幫
你做掉,因此你不知道資料庫系統會不會使用所謂的"最佳執行路徑"來幫你處理,比方說,
從台北到高雄,你可以搭巴士,坐飛機,乘火車,你願意的話,也可以自己開車或騎車,假如你找一個朋友幫你決定使用那種工具,你只跟他講說,我要到高雄,他幫你挑的工具,不見得是你覺得最喜歡的(最具效益),你要資料庫系統幫你處理資料,也是同樣的情況
我調過作業系統,instance, object,也調過sql 語法
作業系統層最明顯的例子在於記憶體不夠,這個狀況下,整個系統會hang住,你連登入都不行,
碰到這種狀況,如果該調整的都已經調了,就直接跟上面講說"加硬體就對了",不過通常主管都
像白癡一樣,跟他講了又不聽,老是以為自己經驗要多強,都是狗屎,重要的是提出數據來他也看
不懂,要怎麼跟他溝通?....哈!!!只有發生幾次狀況,被逼了..只好照著做....才能夠證明出你是
對的..............................哈........
有問題的話,大家就一同聊聊吧 !!