AgusWijiyanto

The CPU issue occurred in the past

Sep 6th, 2019
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.46 KB | None | 0 0
  1. -- Top 15 CPU consuming queries by query hash
  2. -- note that a query  hash can have many query id if not parameterized or not parameterized properly
  3. -- it grabs a sample query text by min
  4. WITH AggregatedCPU AS (SELECT q.query_hash, SUM(count_executions * avg_cpu_time / 1000.0) AS total_cpu_millisec, SUM(count_executions * avg_cpu_time / 1000.0)/ SUM(count_executions) AS avg_cpu_millisec, MAX(rs.max_cpu_time / 1000.00) AS max_cpu_millisec, MAX(max_logical_io_reads) max_logical_reads, COUNT(DISTINCT p.plan_id) AS number_of_distinct_plans, COUNT(DISTINCT p.query_id) AS number_of_distinct_query_ids, SUM(CASE WHEN rs.execution_type_desc='Aborted' THEN count_executions ELSE 0 END) AS Aborted_Execution_Count, SUM(CASE WHEN rs.execution_type_desc='Regular' THEN count_executions ELSE 0 END) AS Regular_Execution_Count, SUM(CASE WHEN rs.execution_type_desc='Exception' THEN count_executions ELSE 0 END) AS Exception_Execution_Count, SUM(count_executions) AS total_executions, MIN(qt.query_sql_text) AS sampled_query_text
  5.                        FROM sys.query_store_query_text AS qt
  6.                             JOIN sys.query_store_query AS q ON qt.query_text_id=q.query_text_id
  7.                             JOIN sys.query_store_plan AS p ON q.query_id=p.query_id
  8.                             JOIN sys.query_store_runtime_stats AS rs ON rs.plan_id=p.plan_id
  9.                             JOIN sys.query_store_runtime_stats_interval AS rsi ON rsi.runtime_stats_interval_id=rs.runtime_stats_interval_id
  10.                        WHERE rs.execution_type_desc IN ('Regular', 'Aborted', 'Exception')AND rsi.start_time>=DATEADD(HOUR, -2, GETUTCDATE())
  11.                        GROUP BY q.query_hash), OrderedCPU AS (SELECT query_hash, total_cpu_millisec, avg_cpu_millisec, max_cpu_millisec, max_logical_reads, number_of_distinct_plans, number_of_distinct_query_ids, total_executions, Aborted_Execution_Count, Regular_Execution_Count, Exception_Execution_Count, sampled_query_text, ROW_NUMBER() OVER (ORDER BY total_cpu_millisec DESC, query_hash ASC) AS RN
  12.                                                               FROM AggregatedCPU)
  13. SELECT OD.query_hash, OD.total_cpu_millisec, OD.avg_cpu_millisec, OD.max_cpu_millisec, OD.max_logical_reads, OD.number_of_distinct_plans, OD.number_of_distinct_query_ids, OD.total_executions, OD.Aborted_Execution_Count, OD.Regular_Execution_Count, OD.Exception_Execution_Count, OD.sampled_query_text, OD.RN
  14. FROM OrderedCPU AS OD
  15. WHERE OD.RN<=15
  16. ORDER BY total_cpu_millisec DESC;
Advertisement
Add Comment
Please, Sign In to add comment