我在服务器上有SQL Server 2008 R2,我的问题是它的CPU使用率达到90%以上。我只需知道,
在哪些情况或场景中,sql server的cpu内存使用量如此之高?
答案 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,这将在未来帮助您,看看您是否需要更多处理器..