如何查找 SQL Server 2005 服务器的 CPU 使用率
答案1
来自 MSDN 文章解决 SQL Server 2005 中的性能问题
以下查询为您提供了当前缓存的哪些批次或过程占用了最多的 CPU 的高级视图。该查询汇总了具有相同 plan__handle 的所有语句(即它们属于同一批次或过程)所消耗的 CPU。如果给定的 plan_handle 包含多个语句,您可能需要进一步深入研究才能找到对总体 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
答案2
答案3
还有一些:
- 威盛
- 性能计数器
- 简单网络管理协议
答案4
使用 sys.dm_exec_query_stats,您可以找到不同 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
在脚本的结果中,您可以找到对象的类型和不同的 CPU 时间计算。