62 lines
3.3 KiB
SQL
62 lines
3.3 KiB
SQL
/*
|
|
Attention, toutes les colonnes sont en microseconde. Pour obtenir 1 seconde, diviser par 1'000'000 ;
|
|
pour obtenir 1 minute, diviser par 60'000'000
|
|
*/
|
|
|
|
/**********************************************************************
|
|
|
|
Extraction des requêtes SQL peu performantes sur l'instance SQL.
|
|
|
|
Renseigner l'"ORDER BY ... DESC" au préalable.
|
|
|
|
Attention, toutes les colonnes sont en microseconde.
|
|
Pour obtenir 1 seconde, diviser par 1'000'000 ;
|
|
pour obtenir 1 minute, diviser par 60'000'000.
|
|
|
|
**********************************************************************/
|
|
|
|
SELECT TOP 100
|
|
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
|
|
-- [qs].[execution_count] > 50
|
|
--OR [qs].[total_worker_time] / [qs].[execution_count] > 100 --[Avg CPU Time (ms)]
|
|
--OR [qs].[total_physical_reads] / [qs].[execution_count] > 1000 --[Avg Physical Reads]
|
|
[qs].[total_logical_reads] / [qs].[execution_count] > 1000 --[Avg Logical Reads]
|
|
--OR [qs].[total_logical_writes] / [qs].[execution_count] > 1000 --[Avg Logical Writes]
|
|
--OR [qs].[total_elapsed_time] / [qs].[execution_count] > 1000 --[Avg Duration (ms)]
|
|
ORDER BY
|
|
[Avg Logical Reads] DESC
|
|
-- [qs].[execution_count] DESC
|
|
--,[qs].[total_elapsed_time] / [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; |