Sql server sqlserver.exe占用的CPU使用率很高,超过90%。在哪种情况下';s的sql server占用了这么多CPU?

Sql server sqlserver.exe占用的CPU使用率很高,超过90%。在哪种情况下';s的sql server占用了这么多CPU?,sql-server,sql-server-2008-r2,Sql Server,Sql Server 2008 R2,我的服务器上有SQLServer2008R2,我的问题是它的CPU使用率达到90%以上。我只想知道 在哪些情况或场景中,sql server的cpu内存使用率如此之高 在哪些情况或场景中,sql server的cpu内存使用率如此之高 这是一个非常广泛的问题,但以下是我将检查的顺序 是否有任何应用程序托管在同一个框中,而不是SQLServer。。?如果是,尽量避免,因为这也不属于最佳实践 当SQLServer使用巨大的CPU时,首先要进行基本的故障排除,找出最消耗CPU的查询 这可以通过下面的查

我的服务器上有SQLServer2008R2,我的问题是它的CPU使用率达到90%以上。我只想知道

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

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

这是一个非常广泛的问题,但以下是我将检查的顺序

是否有任何应用程序托管在同一个框中,而不是SQLServer。。?如果是,尽量避免,因为这也不属于最佳实践

当SQLServer使用巨大的CPU时,首先要进行基本的故障排除,找出最消耗CPU的查询

这可以通过下面的查询找到,或者您可以使用特定于您正在使用的版本的

 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
下一步是尝试优化这些查询…记住,当

1.没有合适的索引,所以每次都要读取整个表。
2.索引存在,但您也面临内存压力,这可能会导致缓冲池被刷新


此外,这将在将来帮助您,并查看您是否需要更多处理器。

谢谢@TheGamesiswar。这个问题并不经常发生,但我有它发生的日期。那么,我们可以找到在特定日期消耗大量CPU时间的查询吗?您无法找到特定日期的查询,但您将得到截至日期的聚合数据