SQLServer數據庫慢查詢追蹤


 

一、通過查詢器查詢當前慢SQL

-- 查找CPU前100條

SELECT TOP 100
(total_elapsed_time / execution_count)/1000 N'平均時間ms' ,total_elapsed_time/1000 N'總花費時間ms' ,total_worker_time/1000 N'所用的CPU總時間ms' ,total_physical_reads N'物理讀取總次數' ,total_logical_reads/execution_count N'每次邏輯讀次數' ,total_logical_reads N'邏輯讀取總次數' ,total_logical_writes N'邏輯寫入總次數' ,execution_count N'執行次數' ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1, ((CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) + 1) N'執行語句' ,creation_time N'語句編譯時間' ,last_execution_time N'上次執行時間' FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st

ORDER BY total_elapsed_time / execution_count DESC;

 

二、使用SQL Server Profiler進行追蹤

1、打開查詢器

   打開 工具 》  SQL Server Profiler

2、點擊SQL Server Profiler(P),連接到服務器

 

 

 

3、設置要保存文件或表

根據需要評估合適的大小,值盡可能大點。根據需要選擇停止時間。

 

 

 

4、選擇 事件選擇

選擇事件:RPC:Completed 和 SQL:BatchCompleted。
RPC:Completed textdata要勾上,其他列使用默認就可以。

 

 

 

 

 

 

 

 

5、再選擇列篩選器

Duration:設置大於3000以上

 

 

   

6、選擇完成之后,點擊運行即可。


 

 

解讀:
TextData:依賴於跟蹤中捕獲的事件類的文本值
CPU:事件使用的CPU時間(單位毫秒)
NTUserName:Windows用戶名
Reads:由服務器代表事件讀取邏輯磁盤的次數
Writes:由服務器代表事件寫入物理磁盤的次數
Duration:事件占用的時間。盡管服務器以微秒計算持續時間,SQL Server Profiler確能以毫秒為單位顯示該值,具體情況取決於‘工具’>‘選項’對話框中的設置 (見下圖1)
SPID:SQL Server為客戶端的相關進程分配的服務器進程ID
StartTime:事件啟動事件
EndTime:事件結束事件。對指示事件開始的事件類。

圖1:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM