我发现其中一个应用程序被卡住了几天。
经过分析,我专注于SQL Server 2008 R2的调度程序问题。
我运行查询select * from master.dbo.sysprocesses
,发现更新查询保存在sos_scheduler_yeild lastwaittype
很长一段时间,CPU列的值非常高(4158738),状态是可运行的。
我重试了停止应用程序并重启它,还有DBCC freesystemcache,freeproccache,更新了应用程序打算更新的表上的统计信息...
但问题仍未解决。
有谁能告诉我CPU列的确切含义,高值意味着什么以及如何解决这个问题?
THX
答案 0 :(得分:0)
当任务正在等待cpu时间时,会发生SOS_SCHEDULER_YIELD等待类型。这通常表示 else 正在消耗此任务想要使用的CPU时间。你可以杀死其他任务,但是这很苛刻,你可以填充更多的CPU,但这是昂贵的,你可以为你的更新语句设置MAXDOP所以它不使用尝试使用否则占用的CPU,但这可以导致执行时间更长(或更短)。
简短答案是:您的基地中有东西在窃取您的CPU。
长答案是进行全面分析,根据您提供的信息,这有点超出范围。