如何將 Profiler Trace 匯入 SQL Server Table 中以便分析與統計
SQL Profiler 雖已提供不錯的篩選功能,但我們也可以將收集到的資料匯入到資料庫來分析
-- 自行建立一個資料庫 ProfilerTraceLog
Use ProfilerTraceLog
/*
--將 Profiler Trace 匯入 SQL Server Table 中以便分析與統計
--下列語法除了將資料匯入到資料表外,同時也會建立一個 IDENTITY 值,以利資料列的識別
USE ProfilerTraceLog
SELECT IDENTITY(int, 1, 1) AS RowNumber, * INTO Demo6
FROM ::fn_trace_gettable('D:\Temp\MAINDB__sp_trace.trc', default)
*/
--可透過將追蹤儲存到資料表並使用 Transact-SQL 來查詢事件資料而找出額外的資訊。
--1. 例如,若要判斷有哪些 SQL:BatchCompleted 事件的等候時間過量,請執行:
SELECT Top 10 TextData, Duration, CPU,[Reads],[Writes]
FROM Demo6
WHERE EventClass = 12 -- SQL:BatchCompleted events
AND CPU < (.4 * Duration)
Order by Duration Desc
-- 找出最耗費 CPU 的 Top 10
SELECT Top 100 Statements=(Cast(TextData as nVarchar(500)))
FROM Demo6
WHERE EventClass IN (10,12,41,43,45)
AND CPU > 1000 -- 1 秒
Group By Cast(TextData as nVarchar(500))
Order by Cast(TextData as nVarchar(500))
-- 找出 Duration 最長的 Top 10
SELECT Top 10 TextData,Duration,CPU,[Reads],[Writes]
FROM Demo6
WHERE EventClass IN (10,12,41,43,45)
AND Duration > 10000 -- 1 秒
AND Duration IS NOT Null -- 1 秒
Order by Duration Desc
-- 找出最 Disk Read 最高的 Top 10
SELECT Top 10 TextData,Duration,CPU,[Reads],[Writes]
FROM Demo6
WHERE EventClass IN (10,12,41,43,45)
AND Reads > 1000 -- 1 秒
Order by [Reads],[Writes],CPU,Duration Desc
詳細的資料可以參考 SQL Server 2005 線上叢書
Comments
- Anonymous
December 14, 2007
PingBack from http://blog.robinzhong.com/index.php/archives/2007/12/15/232.html