SQL Server2008CPU性能监控(二)

2014-11-24 02:52:43 · 作者: · 浏览: 8
和快照事务数。

  MSSQL$MYSQLSERVER:User Settable 1 执行自定义监视。每个计数器可以是一个自定义的存储过程或任何返回一个被监视值的Transact-SQL语句。

  MSSQL$MYSQLSERVER:Wait Statistics 12 提供有关等待的信息。

  MSSQL$MYSQLSERVER:Workload Group Stats 12 提供了有关资源调控器工作负荷组统计的信息。

  关于CPU 的资源消耗基本来自于两个方面,首先是低效率的查询计划,再次是过度编译和重编译。

  过度编译和重编译,SQL语句的编译和重编译都是CPU 密集的活动,发生大量的重编译,则CPU利用率会增加。所以对SQL Server在CPU上的关注会集中在这些SQL统计的编译/重编译计数器上。

CPU的资源消耗

下面语句。

#div_code img { border: 0px none; }
SELECT top 25

  qt.text,

  qs.plan_generation_num,

  qs.execution_count,

  dbid,

  objectid

  FROM sys.dm_exec_query_stats qs

  CROSS APPLY sys.dm_exec_sql_text(sql_handle) as qt

  WHERE plan_generation_num > 1

  ORDER BY qs.plan_generation_num


  SQL Server中,我们也可以确定平均或累计占用CPU时间最多的查询,SQL Server优化器是基于成本的,通过该查询语句的定位,再进一步分析,是统计信息问题还是索引和连接难题。

#div_code img { border: 0px none; }
SELECT top 50

  qt.text AS SQL_text ,

  SUM(qs.total_worker_time) AS total_cpu_time,

  SUM(qs.execution_count) AS total_execution_count,

  SUM(qs.total_worker_time) / SUM(qs.execution_count) AS avg_cpu_time,

  COUNT( * ) AS number_of_statements

  FROM sys.dm_exec_query_stats qs

  CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt

  GROUP BY qt.text

  ORDER BY total_cpu_time DESC -- 统计总的CPU时间

   -- ORDER BY avg_cpu_time DESC -- 统计平均单次查询CPU时间


以下为SQL Server 2008关于CPU的一些系统视图。


CPU的资源消耗  dm_os_nodes提供了一个名为 SQL OS 的内部组件可创建模拟硬件处理器位置的节点结构。

  dm_os_schedulers 对于