和快照事务数。
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统计的编译/重编译计数器上。
下面语句。
#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的一些系统视图。
dm_os_nodes提供了一个名为 SQL OS 的内部组件可创建模拟硬件处理器位置的节点结构。
dm_os_schedulers 对于