SQLServer如何查詢近3分鐘最消耗CPU的SQL

在SQL Server中,要查詢近3分鐘最消耗CPU的SQL語句,可以使用sys.dm_exec_query_stats動態管理視圖結合sys.dm_exec_sql_text函數來獲取SQL語句的文本。不過,直接查詢近3分鐘的數據可能需要一些額外的邏輯來篩選時間範圍,因爲sys.dm_exec_query_stats並不直接提供時間篩選的功能。

一種方法是首先確定當前時間之前3分鐘的時間戳,然後使用這個時間戳來篩選sys.dm_exec_query_stats中的last_execution_time字段。以下是一個示例查詢,它可能需要根據你的具體需求進行調整:

DECLARE @ThreeMinutesAgo DATETIME;
SET @ThreeMinutesAgo = DATEADD(MINUTE, -3, GETDATE());

SELECT TOP 10
    total_worker_time / execution_count AS [Avg CPU Time],
    SUBSTRING(st.text, (qs.statement_start_offset / 2) + 1,
        ((CASE qs.statement_end_offset
            WHEN -1 THEN DATALENGTH(st.text)
            ELSE qs.statement_end_offset
        END - qs.statement_start_offset) / 2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
WHERE qs.last_execution_time > @ThreeMinutesAgo
ORDER BY total_worker_time / execution_count DESC;

這個查詢首先計算出當前時間之前3分鐘的時間戳,然後使用這個時間戳作爲篩選條件來獲取last_execution_time字段大於這個時間戳的所有記錄。接着,它計算平均CPU時間,並按降序排列以找到消耗CPU最多的SQL語句。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章