如何查找SQL Server 2005数据库的CPU使用情况

如何查找SQL Server 2005 Server的CPU使用情况

从MSDN文章解决SQL Server 2005中的性能问题

以下查询为您提供了当前caching的批处理或过程使用最多CPU的高级视图。 查询聚合了具有相同plan__handle的所有语句消耗的CPU(意味着它们是同一批次或过程的一部分)。 如果给定的plan_handle具有多个语句,则可能需要进一步钻取才能find对总体CPU使用率贡献最大的特定查询。

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 

还有一些:

  • WMI
  • 性能计数器
  • SNMP

想到几个方法

  • 任务pipe理器
  • Process Explorer
  • Get-Process sqlservr |select CPU
  • WMI
  • 性能计数器通过PerfMon

使用sys.dm_exec_query_stats这个你可以find不同的SQL Server对象的CPU使用情况。 下面是一个脚本:

 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 

在这个脚本的结果中,您可以find对象的types和CPU时间的不同计算。