2012-03-26 96 views
-1

我發現其中一個應用程序被卡住了幾天。sql server 2008 R2更新卡住了sos_scheduler_yield waittype

經過分析,我專注於SQL Server 2008 R2的調度問題。

我運行查詢select * from master.dbo.sysprocesses,發現更新查詢保存在sos_scheduler_yeild lastwaittype很長時間,並且CPU列的值非常高(4158738),並且狀態是可運行的。

我試停止應用程序並重新啓動它,也DBCC FREESYSTEMCACHE,FREEPROCCACHE,該應用程序打算更新的表更新統計...

,但問題仍懸而未決。

任何人都可以告訴我什麼是CPU列正好意味着什麼,高價值意味着什麼,我該如何解決這個問題?

THX

回答

0

當一個任務正在等待cpu時間發生的SOS_SCHEDULER_YIELD等待類型。這通常表示其他正在消耗此任務想要使用的CPU時間。你可以關掉另一個任務,但這很糟糕,你可以使用更多的CPU,但是這樣很昂貴,你可以爲你的更新語句設置MAXDOP,這樣它就不會嘗試使用那些被佔用的CPU,但那可以導致更長的執行時間(或更短)。

答案是:你的基地偷東西在你的CPU。

答案是做徹底的分析,這是超出範圍基於您提供的信息。

+0

真的很感謝你的快速回復:)所以杯值意味着這個查詢一直等待執行嗎? – user1287431 2012-03-26 07:51:54

+0

以及如何爲更新語句設置MAXDOP?我只知道如何將MAXD​​OP設置爲實例 – user1287431 2012-03-26 07:57:35

+0

我想說等待調度程序給這個任務CPU時間多長時間。 – cairnz 2012-03-26 08:01:24