sqlserver.exe占用高CPU,即超过90%。在哪种情况下,sql server占用了大量的CPU?

时间:2016-09-27 07:26:41

标签: sql-server sql-server-2008-r2

我在服务器上有SQL Server 2008 R2,我的问题是它的CPU使用率达到90%以上。我只需知道,

在哪些情况或场景中,sql server的cpu内存使用量如此之高?

1 个答案:

答案 0 :(得分:1)

  

在哪些情况或场景中,sql server的cpu内存使用量如此之高?

这是一个非常广泛的问题,但以下是我要检查的事情..

是否有任何应用程序托管在SQLServer以外的同一个框中..?如果是,请尽量避免使用它们,因为这也不属于最佳做法。

当SQLServer使用巨大的CPU时,开始的基本故障排除是找出顶级的CPU消耗查询..

可以使用以下查询找到,或者您可以使用Glen Berry DMV特定于您正在使用的版本。

 SELECT TOP 20
    qs.sql_handle,
    qs.execution_count,
    qs.total_worker_time AS Total_CPU,
    total_CPU_inSeconds = --Converted from microseconds
        qs.total_worker_time/1000000,
    average_CPU_inSeconds = --Converted from microseconds
        (qs.total_worker_time/1000000) / qs.execution_count,
    qs.total_elapsed_time,
    total_elapsed_time_inSeconds = --Converted from microseconds
        qs.total_elapsed_time/1000000,
   st.text,
   qp.query_plan
from
    sys.dm_exec_query_stats as qs
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as st
    cross apply sys.dm_exec_query_plan (qs.plan_handle) as qp
ORDER BY qs.total_worker_time desc

下一步是尝试优化这些查询...记住查询可以使用高CPU,

1.没有合适的索引,所以每次都必须读取整个表格。
2.Indexes在那里,但你也面临内存压力,这可能会导致缓冲池被冲刷出来..

另外Consider base lining the performance of SQLServer,这将在未来帮助您,看看您是否需要更多处理器..