我的 SQL Server 2016 資料庫在 06:30 出現 100% CPU 利用率問題。現在我想檢查哪個查詢或用戶導致了這個問題。我在網上搜索了一些文章。他們都展示了如何在查詢運行時檢查它。但我想要的是在 06:30 檢查歷史記錄。資料庫現在很好。因此,如果我現在檢查性能,則找不到任何正在運行的查詢/作業。如何檢查歷史記錄以確定原因?
uj5u.com熱心網友回復:
您可以嘗試從 sys.dm_exec_query_stat dmv 調查開銷最大的并行執行查詢,其中 max_worker_time 是最大 CPU 時間。
Select Top 100 O.type_desc, O.name, S.creation_time, S.last_execution_time, S.min_elapsed_time, S.max_elapsed_time,
S.Last_elapsed_time, S.Min_worker_time, S.Max_worker_time, S.Last_worker_time, S.execution_count,
SUBSTRING (T.text, (S.statement_start_offset/2) 1, ((CASE WHEN S.statement_end_offset = -1 THEN DATALENGTH(T.text) ELSE S.statement_end_offset END - S.statement_start_offset)/2) 1)
From sys.dm_exec_query_stats As S Cross Apply sys.dm_exec_sql_text(S.sql_handle) as T
Cross Apply (Select type_desc, name From sys.objects Where object_id=T.objectid) as O
WHERE T.dbid = DB_ID() And
S.Max_worker_time > S.Max_elapsed_time
Order by S.Max_worker_time Desc
uj5u.com熱心網友回復:
從 ssms,運行服務器的活動監視器并查看最近的昂貴查詢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/347760.html
標籤:sql-server
