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

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

如何查找 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 时间计算。

相关内容