1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| ;WITH
DB_CPU_STAT AS
(
SELECT D.database_id
, D.name AS database_name
, SUM(total_worker_time) / 1000 AS total_CPU_time_ms
FROM sys.dm_exec_query_stats AS QS
CROSS APPLY (
SELECT CONVERT(int, value) AS database_id
FROM sys.dm_exec_plan_attributes(QS.plan_handle)
WHERE attribute = N'dbid'
) AS DB
INNER JOIN sys.databases AS D
ON DB.database_id = D.database_id
GROUP BY D.database_id, D.name
)
SELECT database_name
, total_CPU_time_ms / 1000 AS total_CPU_time_s
, CAST(total_CPU_time_ms * 1.0 / SUM(total_CPU_time_ms) OVER() * 100.0 AS decimal(5, 2)) AS [CPU_%]
FROM DB_CPU_STAT
WHERE database_id > 4 -- system databases
AND database_id <> 32767 -- ResourceDB
ORDER BY total_CPU_time_ms DESC |
Partager