For Day 13 of this series, we start out with Query #30<\/strong>, which is CPU Usage by Database. This query retrieves information from the sys.dm_exec_query_stats<\/a> dynamic management view and from the sys.dm_exec_plan_attributes<\/a> dynamic management function about total CPU usage by database for cached query plans. Query #30 is shown in Figure 1.<\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/div>\n<\/div>\n Figure 1: Query #30 CPU Usage by Database<\/strong><\/p>\n Simply speaking, this query shows you which databases are using the most CPU resources on the instance, at least as far as their cached query plans are concerned. If you are seeing any signs of CPU pressure, this query can help point you at the correct databases to investigate further, to see what queries are using the most CPU resources. There are several other queries in this complete set that can help you find the most expensive cached stored procedures and queries.<\/p>\n <\/p>\n 1:<\/span> -- Get CPU utilization by database (Query 30) (CPU Usage by Database)<\/span><\/pre>\n 2:<\/span> WITH<\/span> DB_CPU_Stats<\/pre>\n 3:<\/span> AS<\/span><\/pre>\n 4:<\/span> (SELECT<\/span> pa.DatabaseID, DB_Name(pa.DatabaseID) AS<\/span> [Database<\/span> Name], SUM<\/span>(qs.total_worker_time\/1000) AS<\/span> [CPU_Time_Ms]<\/pre>\n 5:<\/span> FROM<\/span> sys.dm_exec_query_stats AS<\/span> qs WITH<\/span> (NOLOCK)<\/pre>\n 6:<\/span> CROSS<\/span> APPLY (SELECT<\/span> CONVERT<\/span>(int<\/span>, value<\/span>) AS<\/span> [DatabaseID] <\/pre>\n 7:<\/span> FROM<\/span> sys.dm_exec_plan_attributes(qs.plan_handle)<\/pre>\n 8:<\/span> WHERE<\/span> attribute = N'dbid'<\/span>) AS<\/span> pa<\/pre>\n 9:<\/span> GROUP<\/span> BY<\/span> DatabaseID)<\/pre>\n 10:<\/span> SELECT<\/span> ROW_NUMBER() OVER<\/span>(ORDER<\/span> BY<\/span> [CPU_Time_Ms] DESC<\/span>) AS<\/span> [CPU Rank],<\/pre>\n 11:<\/span> [Database<\/span> Name], [CPU_Time_Ms] AS<\/span> [CPU Time<\/span> (ms)], <\/pre>\n 12:<\/span> CAST<\/span>([CPU_Time_Ms] * 1.0 \/ SUM<\/span>([CPU_Time_Ms]) OVER<\/span>() * 100.0 AS<\/span> DECIMAL<\/span>(5, 2)) AS<\/span> [CPU Percent<\/span>]<\/pre>\n 13:<\/span> FROM<\/span> DB_CPU_Stats<\/pre>\n 14:<\/span> WHERE<\/span> DatabaseID <> 32767 -- ResourceDB<\/span><\/pre>\n 15:<\/span> ORDER<\/span> BY<\/span> [CPU Rank] OPTION<\/span> (RECOMPILE);<\/pre>\n 16:<\/span> <\/pre>\n 17:<\/span> -- Helps determine which database<\/span> is<\/span> using<\/span> the most CPU resources on<\/span> the instance<\/pre>\n