2012-03-26 7 views
-1

アプリケーションの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列が正確に何を意味するのか、高い価値が何を意味するのか、どうすればこの問題を解決できますか?タスクがCPU時間を待っているとき

THX

答えて

0

SOS_SCHEDULER_YIELD待機型が発生します。これは通常、何かを示しますは、このタスクが代わりに使用したいCPU時間を消費しています。あなたは他のタスクを殺すことができますが、それは厳しいです、より多くのCPUを詰めることができるかもしれませんが、それは高価です、そうでなければ占領されているCPUを使用しようとするためにあなたの更新ステートメントのMAXDOPを設定することができます実行時間が長くなる(または短くなる)。

短い答えは:あなたのCPUを盗んであなたのベースに何かがあります:

長い回答は徹底的な分析を行うことです。これは、提供した情報に基づいて範囲をはるかに超えています。

+0

本当にありがとうございます:)カップの値は、このクエリが実行されるのを待っているホーズを意味します。 – user1287431

+0

そして、更新ステートメントのMAXDOPの設定方法は?私はインスタンス – user1287431

+0

にMAXDOPを設定する方法だけを知っています。スケジューラがタスクのCPU時間をどれくらい待っていたのでしょう。 – cairnz

関連する問題