sql server 2008 R2更新卡在sos_scheduler_yield waittype中

时间:2012-03-26 07:11:22

标签: sql-server

我发现其中一个应用程序被卡住了几天。

经过分析,我专注于SQL Server 2008 R2的调度程序问题。

我运行查询select * from master.dbo.sysprocesses,发现更新查询保存在sos_scheduler_yeild lastwaittype很长一段时间,CPU列的值非常高(4158738),状态是可运行的。

我重试了停止应用程序并重启它,还有DBCC freesystemcache,freeproccache,更新了应用程序打算更新的表上的统计信息...

但问题仍未解决。

有谁能告诉我CPU列的确切含义,高值意味着什么以及如何解决这个问题?

THX

1 个答案:

答案 0 :(得分:0)

当任务正在等待cpu时间时,会发生SOS_SCHEDULER_YIELD等待类型。这通常表示 else 正在消耗此任务想要使用的CPU时间。你可以杀死其他任务,但是这很苛刻,你可以填充更多的CPU,但这是昂贵的,你可以为你的更新语句设置MAXDOP所以它不使用尝试使用否则占用的CPU,但这可以导致执行时间更长(或更短)。

简短答案是:您的基地中有东西在窃取您的CPU。

答案是进行全面分析,根据您提供的信息,这有点超出范围。