目的是查看系統(應用程式+資料庫)調用SQL Stored Procedure預存程序和SQL語句的效能,查出哪兒慢?哪個預存程序最耗用時間?
有的時候你在一個表設了好幾個索引 ( Clustered / Non-clustered Index ),結果還是很慢(全表掃描),因為你的索引根本沒有被命中,根本沒有被出現在WHERE或者ORDER BY裡面!
1. 開啟Profiler:
"Start - Programs - SQL Server2005 - Performance Tools - Sql Server Profiler"
2. 點擊工具列第一個button - "New Trace..."
3. 在第一個Tab : General中打勾 "Save to table", 輸出到表。
在彈出的視窗中選擇master資料庫, 表名隨意,例如jq
4. 在第二個Tab : Events Selection中,不要選擇Security安全和Session部分,只選擇預存程序和SQL。
5. 點擊RUN。
如果出現錯誤:“only TrueType fonts are supported. There id not a TrueType font”,則在Profiler的 Tools菜單->Options中選擇"Choose Font..."選擇其他字型即可。
6. 開始監控後,啟動Application,運行多久隨意,可以監控高峰時段也可以。監控結束後,點擊Stop。
7. 開啟SQL Server management studio, 連結到master資料庫,輸入sql語句:
select top 500 * from jq order by duration desc;
8. 可以看到耗時最久的預存程序。接下來具體分析每個預存程序的SQL語句。
可以通過執行計畫( Execution Plan )來檢測。
菜單:"Query" - "Display Estimated Execution Plan."
9. 修改SQL語句並調優,重複以上步驟。