停止从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%。
谢谢。
答
经过检查和读取SQL优化后,我发现我必须为表'Subscriber'和'pageList'添加多个索引,而不是PK。 现在它工作正常,CPU处于良好状态(最多50%)。
谢谢。
您只显示单个查询,这看起来微不足道。您是否因重复ASP.NET调用而反复执行这些查询?你能否在EF调用中设置一个断点,并看到它正在遭受重创? –
实际上是的,这两个查询从网站上打了很多,我每分钟打100次。 –
可以打开SQL跟踪?超过100万个查询听起来真的很高,每分钟只有100个。你怎么知道CPU的使用来自哪里? –