停止从SQL Server CPU重新执行失败查询100%

停止从SQL Server CPU重新执行失败查询100%

问题描述:

我的web应用程序出现问题,CPU使用率为100%。我正在使用ASP.NET webforms和SQL Server 2008 R2。当我试图从sys.dm_exec_requests选择跟踪长时间运行的查询,我发现5个查询有很多执行次数:停止从SQL Server CPU重新执行失败查询100%

  • 第一个是1031651次。
  • 第二个是62472次。

我使用的查询技术是实体框架和代码是这样的:

using (var db = new xEntities()) 
{ 
    var item = db.PageLists 
        .Where(a => a.PageUrl == pageurl && a.Status == true) 
        .SingleOrDefault(); 

    if (item != null) 
    { 
     result = true; 
    } 
} 

另一个查询:

using (var db = new xEntities()) 
{ 
    var item = db.tblSubscribers 
       .FirstOrDefault(a => a.refid == refid); 

    if (item != null) 
    { 
     refance = item.subid; 
    } 
} 

我在表subscriber有一个指数refid而对于表Pagelist我只有6行

CPU使用率不是goi ng低于99%。

谢谢。

+0

您只显示单个查询,这看起来微不足道。您是否因重复ASP.NET调用而反复执行这些查询?你能否在EF调用中设置一个断点,并看到它正在遭受重创? –

+0

实际上是的,这两个查询从网站上打了很多,我每分钟打100次。 –

+1

可以打开SQL跟踪?超过100万个查询听起来真的很高,每分钟只有100个。你怎么知道CPU的使用来自哪里? –

经过检查和读取SQL优化后,我发现我必须为表'Subscriber'和'pageList'添加多个索引,而不是PK。 现在它工作正常,CPU处于良好状态(最多50%)。

谢谢。