使用sys.dm_exec_query_stats與sys.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
執行結果:
沒有留言:
張貼留言