[英]Creating a compiled query linq and performance issues with regular LINQ
我目前有一个查询,如下所示:
using (var ctx = new myEntities())
{
ctx.Configuration.LazyLoadingEnabled = false;
ctx.Configuration.ProxyCreationEnabled = false;
ctx.Database.CommandTimeout = 200;
competitors = DBRetry.Do(() => ctx.SearchedUsers.AsNoTracking().Where(x => x.InQueue == true).OrderBy(x => x.LastUpdatedAt).Take(2000).ToList(), TimeSpan.FromSeconds(1));
}
由于其他用户/应用程序经常使用“ SearchedUsers”表,因此在对该数据库进行查询时,我通常会遇到速度慢/死锁的情况。
我已经做了一些研究来通过关闭延迟加载,对查询使用AsNoTracking()技巧并在对数据库执行查询时增加命令超时来加快此过程,但是有时仍然会发生死锁...
所以我的问题是:
有人可以帮助我实施一个已编译的查询解决方案吗?
在数据库中创建查询作为视图。 在查询或“未提交的隔离级别”上设置NOLOCK提示。 然后将模型对象设置为表的视图。
编译查询将有助于提高性能,但并不能帮助您锁定记录。
另外,为什么要使用200毫秒的CommandTimeout? 如果您对此进行调整会怎样?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.