1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| WITH
CTE AS
(
SELECT QS.query_plan_hash
, QS.query_hash
, QS.sql_handle
, COUNT(*) AS entries_count
, SUM(QS.execution_count) AS execution_count
, MIN(QS.sql_handle) AS sample_sql_handle
, MIN(QS.plan_handle) AS sample_plan_handle
, SUM(QS.total_worker_time) AS total_CPU_time
, SUM(QS.total_logical_reads) AS total_logical_reads
, SUM(CAST(P.size_in_bytes AS bigint)) / 1024 / 1024 AS total_size_MB
FROM sys.dm_exec_query_stats AS QS
INNER JOIN sys.dm_exec_cached_plans AS P
ON QS.plan_handle = P.plan_handle
GROUP BY query_plan_hash, query_hash, sql_handle
HAVING COUNT(*) > 1
)
SELECT Q.entries_count
, Q.execution_count
, Q.total_logical_reads
, Q.total_CPU_time
, Q.sample_plan_handle
, ROW_NUMBER() OVER(ORDER BY Q.entries_count DESC) AS n
, Q.query_plan_hash
, Q.query_hash
, QP.objectid
, DB_NAME(QT.dbid) AS database_name
, Q.total_size_MB
FROM CTE AS Q
CROSS APPLY sys.dm_exec_query_plan(Q.sample_plan_handle) AS QP
CROSS APPLY sys.dm_exec_sql_text(Q.sql_handle) AS QT
WHERE QT.text NOT LIKE '%sp?_replmonitorrefreshagentdata%' ESCAPE '?'
AND QT.text NOT LIKE '%sp?_replmonitorhelppublisherhelper%' ESCAPE '?'
AND (
(
QP.dbid > 4
AND QP.dbid <> 32767
)
OR QP.dbid IS NULL
)
ORDER BY Q.entries_count; |
Partager