[SQL][Performance]善用 Excel 來做效能分析
去年曾經發表過一篇 [SQL][Performance]利用效能監視器了解 SQL Server 運作狀況 ,也透過這樣的方式幫我解決了不少問題,而最近在指導一些工程師在使用的方式,有人在使用之後提出了一個問題,那麼多的數據放到 Excel 內,不知道該怎麼來做分析,對此問題我也困擾了一陣子,剛好最近有機會請教一些 Excel 的專家們,讓我順利解決了困擾我好久的問題。因此我想可能也有人會遇到類似的問題,因此我把幾個關鍵點整理一下,希望對大家有點幫助。
在這個範例中我們使用 Office 2010,基本上其他版本觀念應該也是雷同,新版本的只是在部分功能上會來的比較方便,圖表也相對地比較漂亮一點。
首先當我們用效能監視器所監控的數據,如果要拿來做後續分析的話,我們多半會將資料存成 csv 的格式,此時在 Excel 內選擇開啟舊檔的時候,將格式選擇為文字檔案,就可以輕鬆的開啟我們會監控的資料檔案。
開啟後我們家標題欄位稍微修改一下,這樣比較方便後續處理。
如果此時我們直接把資料拿來做圖表的話,則由於資料太密了,因此整個折線圖的圖表看起來就有點像是柱狀圖了,而且密密麻麻的也很難做分析比較。而從上面的資料中我們可以看出來,由於效能監視器在紀錄的時候,我們選擇每一分鐘產生一筆紀錄,這樣每天就會有 1440筆的紀錄 ( 24 * 60 = 1440 ),因此我們如果要分析的話,也許要把每 15 分鐘合併為一筆紀錄,再來看圖表會比較合適一點。
為了要做這樣的處理,也方便後續在公式的設定上比較容易一點,因此我們先把資料會轉換成為表格。在 Excel 2010 上是很容易的,只要我們先將游標移在資料上,再點選選單上的「插入」→「表格」
確認資料來源沒有錯誤後,按下「確認」
此時就可以順利地把資料轉換成為表格資料。
由於效能監視器所匯出的資料是美國的日期時間格式,因此我們要先把這個欄位分離成為日期和時間的格式,此時我們在 DateTime 欄位上,再點選選單上「資料」→「資料剖析」
因為要把原本的日期時間給分開,因此我選擇使用「分隔符號」來切割 DateTime 的欄位
此時我們選擇分隔符號為「空格」和 「.」
此時記得要把第一欄日期欄位的格式選擇「YMD」,並且把第三欄毫秒的部分選擇不匯入,就可以按下「完成」將原本的 DateTime 欄位分開成為日期和時間的部分。
接著我們將剛剛步驟所產生的欄位名稱給修改為 Date 和 Time ( 因為太多欄位佔畫面,所以此部分我先刪除一個 Memory 監控的欄位 )
由於 Excel 內並沒有提供自動將時間每隔幾分鐘給分群組,因此這裡我新增了一個欄位,並且在欄位上設定公式為「= INT(([Time]*1440)/15)*15/1440」,這樣做主要是因為在 Excel 內時間是用數值的方式來儲存,1 代表了一天,0.5 表示 12 個小時,因此我們先將時間乘上 1440,再根據我們想要每 15 分鐘為一個群組,因此用整除 15 之後,再乘上 15 並除上 1440 ,此時要記得將欄位的格式設定為時間,這樣看到的才會是時間格式。
接下來我們就用 Excel 擅長的樞紐分析表來按照相同的時間群組,來找出每個相同區間內的最大值
在樞紐分析表的欄位上我們選擇用日期分開每天的資料,將該欄位放在「報表篩選」,把群組時間放在「座標軸」,而將我們想要的兩個欄位 Read Queue 和 Write Queue 放在「值」的部分
並且將圖表格式選擇為「折線圖」之後,我們就可以看到我們所想要的圖表。
雖然這樣看起來蠻不錯的,但如果我們要查驗多天的資料,用左上方的「日期篩選」又不是那麼方便,因此接下來我們再來稍微做一點加工,此時先點選樞紐分析圖,再選擇選單上的「分析」,此時點選「欄位選單」和「欄位按鈕」將這兩個給取消掉,然後再選擇「插入交叉分析篩選器」
接著我們選擇 Date 這個欄位
就可以出現類似下圖的樣式,此時我們點選資料篩選器上的日期,圖表上就會正確顯示該天的資料
如果覺得這樣還不是那麼好,因為從圖上並沒有辦法看出來這樣的狀況是否 OK,因此我們可以回到原始表格的地方,插入一個欄位,設定欄位值的公式為「=1」,重新整理樞紐分析表之後,就可以做出來一條基準線,那就可以很容易來解釋圖的資料了。
後記:基本上並不一定要使用 Excel 配合樞紐分析表來做,也可以把資料匯入到 SQL Server 用 Reporting Services 做報表;或者是自己寫程式或者是用 Excel VBA來處理,只是想說能否找到一個讓工程師可以容易上手的方式,畢竟聽到要寫程式都會讓很多做維護的工程師馬上就想要放棄了,而在這樣的處理方式,只需要一些 Excel 的使用觀念,並且配合一些簡單的公式,就可以做到一份很不錯的分析報告,如果後續可以更熟悉的話,可以多加入一些公式,多配合一些資料篩選器,那就可以更彈性的來做分析了。