153 lines
8.5 KiB
SQL
153 lines
8.5 KiB
SQL
SELECT TOP 100
|
|
'longest query' AS msg,
|
|
GETDATE() AS [Collection Date],
|
|
[qs].[execution_count] AS [Execution Count],
|
|
SUBSTRING(
|
|
[qt].[text],
|
|
[qs].[statement_start_offset] / 2 + 1,
|
|
(CASE
|
|
WHEN [qs].[statement_end_offset] = -1 THEN
|
|
LEN(CONVERT(NVARCHAR(MAX), [qt].[text])) * 2
|
|
ELSE
|
|
[qs].[statement_end_offset]
|
|
END - [qs].[statement_start_offset]
|
|
) / 2
|
|
) AS [Query Text],
|
|
DB_NAME([qt].[dbid]) AS [DB Name],
|
|
[qs].[total_worker_time] AS [Total CPU Time],
|
|
[qs].[total_worker_time] / [qs].[execution_count] AS [Avg CPU Time (ms)],
|
|
[qs].[total_physical_reads] AS [Total Physical Reads],
|
|
[qs].[total_physical_reads] / [qs].[execution_count] AS [Avg Physical Reads],
|
|
[qs].[total_logical_reads] AS [Total Logical Reads],
|
|
[qs].[total_logical_reads] / [qs].[execution_count] AS [Avg Logical Reads],
|
|
[qs].[total_logical_writes] AS [Total Logical Writes],
|
|
[qs].[total_logical_writes] / [qs].[execution_count] AS [Avg Logical Writes],
|
|
[qs].[total_elapsed_time] AS [Total Duration],
|
|
[qs].[total_elapsed_time] / 1000000.0 AS [Total Duration seconds],
|
|
[qs].[total_elapsed_time] / [qs].[execution_count] / 1000000.0 AS [Avg Duration seconds],
|
|
[qp].[query_plan] AS [Plan],
|
|
[qs].[creation_time],
|
|
[qs].[last_execution_time]
|
|
FROM [sys].[dm_exec_query_stats] AS [qs]
|
|
CROSS APPLY [sys].dm_exec_sql_text([qs].[sql_handle]) AS [qt]
|
|
CROSS APPLY [sys].dm_exec_query_plan([qs].[plan_handle]) AS [qp]
|
|
WHERE
|
|
--/* most often used */ [qs].[execution_count] > 50
|
|
--/* most CPU intensive */ [qs].[total_worker_time] / [qs].[execution_count] > 100 --[Avg CPU Time (ms)]
|
|
--/* most read IO */ [qs].[total_physical_reads] / [qs].[execution_count] > 1000 --[Avg Physical Reads]
|
|
--/* most intesive in reads */ [qs].[total_logical_reads] / [qs].[execution_count] > 1000 --[Avg Logical Reads]
|
|
--/* most IO intensive in write */ [qs].[total_logical_writes] / [qs].[execution_count] > 1000 --[Avg Logical Writes]
|
|
/* longest queries */ [qs].[total_elapsed_time] / [qs].[execution_count] > 1000 --[Avg Duration (ms)]
|
|
AND DB_NAME([qt].[dbid]) NOT IN ( 'master', 'msdb', 'model', 'tempDb' )
|
|
ORDER BY
|
|
--[Avg Logical Reads] DESC
|
|
--[qs].[execution_count] DESC
|
|
--,[qs].[total_worker_time] / [qs].[execution_count] DESC
|
|
--,[qs].[total_physical_reads] / [qs].[execution_count] DESC
|
|
--,[qs].[total_logical_reads] / [qs].[execution_count] DESC
|
|
--,[qs].[total_logical_writes] / [qs].[execution_count] DESC;
|
|
/* average duration */ [qs].[total_elapsed_time] / [qs].[execution_count] DESC;
|
|
|
|
|
|
SELECT TOP 100
|
|
'most cpu' AS msg,
|
|
GETDATE() AS [Collection Date],
|
|
[qs].[execution_count] AS [Execution Count],
|
|
SUBSTRING(
|
|
[qt].[text],
|
|
[qs].[statement_start_offset] / 2 + 1,
|
|
(CASE
|
|
WHEN [qs].[statement_end_offset] = -1 THEN
|
|
LEN(CONVERT(NVARCHAR(MAX), [qt].[text])) * 2
|
|
ELSE
|
|
[qs].[statement_end_offset]
|
|
END - [qs].[statement_start_offset]
|
|
) / 2
|
|
) AS [Query Text],
|
|
DB_NAME([qt].[dbid]) AS [DB Name],
|
|
[qs].[total_worker_time] AS [Total CPU Time],
|
|
[qs].[total_worker_time] / [qs].[execution_count] AS [Avg CPU Time (ms)],
|
|
[qs].[total_physical_reads] AS [Total Physical Reads],
|
|
[qs].[total_physical_reads] / [qs].[execution_count] AS [Avg Physical Reads],
|
|
[qs].[total_logical_reads] AS [Total Logical Reads],
|
|
[qs].[total_logical_reads] / [qs].[execution_count] AS [Avg Logical Reads],
|
|
[qs].[total_logical_writes] AS [Total Logical Writes],
|
|
[qs].[total_logical_writes] / [qs].[execution_count] AS [Avg Logical Writes],
|
|
[qs].[total_elapsed_time] AS [Total Duration],
|
|
[qs].[total_elapsed_time] / 1000000.0 AS [Total Duration seconds],
|
|
[qs].[total_elapsed_time] / [qs].[execution_count] / 1000000.0 AS [Avg Duration seconds],
|
|
[qp].[query_plan] AS [Plan],
|
|
[qs].[creation_time],
|
|
[qs].[last_execution_time]
|
|
FROM [sys].[dm_exec_query_stats] AS [qs]
|
|
CROSS APPLY [sys].dm_exec_sql_text([qs].[sql_handle]) AS [qt]
|
|
CROSS APPLY [sys].dm_exec_query_plan([qs].[plan_handle]) AS [qp]
|
|
WHERE
|
|
--/* most often used */ [qs].[execution_count] > 50
|
|
/* most CPU intensive */ [qs].[total_worker_time] / [qs].[execution_count] > 100 --[Avg CPU Time (ms)]
|
|
--/* most read IO */ [qs].[total_physical_reads] / [qs].[execution_count] > 1000 --[Avg Physical Reads]
|
|
--/* most intesive in reads */ [qs].[total_logical_reads] / [qs].[execution_count] > 1000 --[Avg Logical Reads]
|
|
--/* most IO intensive in write */ [qs].[total_logical_writes] / [qs].[execution_count] > 1000 --[Avg Logical Writes]
|
|
--/* longest queries */[qs].[total_elapsed_time] / [qs].[execution_count] > 1000 --[Avg Duration (ms)]
|
|
AND DB_NAME([qt].[dbid]) NOT IN ( 'master', 'msdb', 'model', 'tempDb' )
|
|
ORDER BY
|
|
--[Avg Logical Reads] DESC
|
|
--[qs].[execution_count] DESC
|
|
/* cpu intensive */ [qs].[total_worker_time] / [qs].[execution_count] DESC;
|
|
--,[qs].[total_physical_reads] / [qs].[execution_count] DESC
|
|
--,[qs].[total_logical_reads] / [qs].[execution_count] DESC
|
|
--,[qs].[total_logical_writes] / [qs].[execution_count] DESC;
|
|
--/* average duration */,[qs].[total_elapsed_time] / [qs].[execution_count] DESC
|
|
|
|
|
|
SELECT TOP 100
|
|
'most physical reads' AS msg,
|
|
GETDATE() AS [Collection Date],
|
|
[qs].[execution_count] AS [Execution Count],
|
|
SUBSTRING(
|
|
[qt].[text],
|
|
[qs].[statement_start_offset] / 2 + 1,
|
|
(CASE
|
|
WHEN [qs].[statement_end_offset] = -1 THEN
|
|
LEN(CONVERT(NVARCHAR(MAX), [qt].[text])) * 2
|
|
ELSE
|
|
[qs].[statement_end_offset]
|
|
END - [qs].[statement_start_offset]
|
|
) / 2
|
|
) AS [Query Text],
|
|
DB_NAME([qt].[dbid]) AS [DB Name],
|
|
[qs].[total_worker_time] AS [Total CPU Time],
|
|
[qs].[total_worker_time] / [qs].[execution_count] AS [Avg CPU Time (ms)],
|
|
[qs].[total_physical_reads] AS [Total Physical Reads],
|
|
[qs].[total_physical_reads] / [qs].[execution_count] AS [Avg Physical Reads],
|
|
[qs].[total_logical_reads] AS [Total Logical Reads],
|
|
[qs].[total_logical_reads] / [qs].[execution_count] AS [Avg Logical Reads],
|
|
[qs].[total_logical_writes] AS [Total Logical Writes],
|
|
[qs].[total_logical_writes] / [qs].[execution_count] AS [Avg Logical Writes],
|
|
[qs].[total_elapsed_time] AS [Total Duration],
|
|
[qs].[total_elapsed_time] / 1000000.0 AS [Total Duration seconds],
|
|
[qs].[total_elapsed_time] / [qs].[execution_count] / 1000000.0 AS [Avg Duration seconds],
|
|
[qp].[query_plan] AS [Plan],
|
|
[qs].[creation_time],
|
|
[qs].[last_execution_time]
|
|
FROM [sys].[dm_exec_query_stats] AS [qs]
|
|
CROSS APPLY [sys].dm_exec_sql_text([qs].[sql_handle]) AS [qt]
|
|
CROSS APPLY [sys].dm_exec_query_plan([qs].[plan_handle]) AS [qp]
|
|
WHERE
|
|
--/* most often used */ [qs].[execution_count] > 50
|
|
--/* most CPU intensive */ [qs].[total_worker_time] / [qs].[execution_count] > 100 --[Avg CPU Time (ms)]
|
|
/* most read IO */ [qs].[total_physical_reads] / [qs].[execution_count] > 1000 --[Avg Physical Reads]
|
|
--/* most intesive in reads */ [qs].[total_logical_reads] / [qs].[execution_count] > 1000 --[Avg Logical Reads]
|
|
--/* most IO intensive in write */ [qs].[total_logical_writes] / [qs].[execution_count] > 1000 --[Avg Logical Writes]
|
|
--/* longest queries */[qs].[total_elapsed_time] / [qs].[execution_count] > 1000 --[Avg Duration (ms)]
|
|
AND DB_NAME([qt].[dbid]) NOT IN ( 'master', 'msdb', 'model', 'tempDb' )
|
|
ORDER BY
|
|
--[Avg Logical Reads] DESC
|
|
--[qs].[execution_count] DESC
|
|
--,[qs].[total_worker_time] / [qs].[execution_count] DESC
|
|
/* most disk activity */ [qs].[total_physical_reads] / [qs].[execution_count] DESC;
|
|
--,[qs].[total_logical_reads] / [qs].[execution_count] DESC
|
|
--,[qs].[total_logical_writes] / [qs].[execution_count] DESC;
|
|
--/* average duration */,[qs].[total_elapsed_time] / [qs].[execution_count] DESC
|
|
|