Как узнать использование ЦП для SQL Server 2005 Server
Из статьи MSDN на Устранение проблем с производительностью в SQL Server 2005
Следующий запрос дает вам высокоуровневое представление о том, какие кэшированные в данный момент пакеты или процедуры используют больше всего ЦП. Запрос объединяет ресурсы ЦП, используемые всеми операторами, с одним и тем же plan__handle (что означает, что они являются частью одного пакета или процедуры). Если данный plan_handle имеет более одного оператора, возможно, вам придется углубиться в детали, чтобы найти конкретный запрос, который вносит наибольший вклад в общее использование ЦП.
select top 50
sum(qs.total_worker_time) as total_cpu_time,
sum(qs.execution_count) as total_execution_count,
count(*) as number_of_statements,
qs.plan_handle
from
sys.dm_exec_query_stats qs
group by qs.plan_handle
order by sum(qs.total_worker_time) desc
Еще несколько:
Используйте счетчики производительности http://tipsstation.com/article/SQL-Server-Performance-Counters.aspx
На ум приходят несколько способов
Get-Process sqlservr |select CPU
Используя sys.dm_exec_query_stats, вы можете найти использование процессора различными объектами SQL Server. Ниже приведен сценарий:
SELECT
DB_NAME(st.dbid) AS DatabaseName
,OBJECT_SCHEMA_NAME(st.objectid,dbid) AS SchemaName
,cp.objtype AS ObjectType
,OBJECT_NAME(st.objectid,dbid) AS Objects
,MAX(cp.usecounts)AS Total_Execution_count
,SUM(qs.total_worker_time) AS Total_CPU_Time
,SUM(qs.total_worker_time) / (max(cp.usecounts) * 1.0) AS Avg_CPU_Time
FROM sys.dm_exec_cached_plans cp
INNER JOIN sys.dm_exec_query_stats qs
ON cp.plan_handle = qs.plan_handle
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) st
WHERE DB_NAME(st.dbid) IS NOT NULL
GROUP BY DB_NAME(st.dbid),OBJECT_SCHEMA_NAME(objectid,st.dbid),cp.objtype,OBJECT_NAME(objectid,st.dbid)
ORDER BY sum(qs.total_worker_time) desc
В этом результате скрипта вы можете найти типы объектов и различные расчеты процессорного времени.