2016-09-27 502 views

回答

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,這將在未來幫助你,看看你是否需要更多的處理器..

+0

謝謝@TheGamesiswar。這個問題並沒有經常發生,但我有它發生的日期。那麼我們是否可以找到在特定日期消耗大量CPU時間的查詢? – pankaj

+0

您無法找到特定的日期,但您將獲得彙總數據直至日期 – TheGameiswar

相關問題