2011年10月31日 星期一

使用(Dynamic Management View)找出執行最久的查詢

使用sys.dm_exec_query_statssys.dm_exec_sql_text找出被Block最久的SQL指令,如果有些SQL指令Block太久,會早成其他SQL指令要等待它釋放資源才能完成工作,這樣會大大影響資料庫的效能,甚至引起死結,要快速找出Block最久的SQL指令使用DMV是一個快速的方法,以下的程式碼就是使用DMV找出執行最久的SQL指令。

SELECT TOP 10 [執行時間()]=CAST((a.total_elapsed_time - a.total_worker_time) /1000000.0 AS DECIMAL(16,2))
,[執行次數]= a.execution_count
,[SQL指令]= b.text
FROM sys.dm_exec_query_stats A
CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) as b
WHERE a.total_elapsed_time > 0 AND b.text  NOT LIKE '%SCHEMA%'
ORDER BY 1 DESC

執行結果:

沒有留言:

張貼留言