【问题标题】:Entity framework Slow query performance实体框架查询性能慢
【发布时间】:2018-06-12 13:00:18
【问题描述】:

我正在使用 Entity framework 6.2.0 和托管在 Azure 应用服务上的 WebAPI。

我的数据库不大,只有两个表,我有一个简单的选择查询

Account account =  Db.Accounts.Where(p => p.Code == Code && p.PersonId == 
PersonId).Include("Options").FirstOrDefaultAsync();

我正在苦苦挣扎的是,当我在 azure 上部署它时。每当我第一次调用使用上述查询的 api 时,或者当两次调用之间存在几分钟或 1 小时的显着差距时,上述过程需要很长时间才能完成。几乎 20-25 秒,下一个调用是不到一秒钟。

我已经确认,这绝对不是我的网络延迟或其他什么东西在减慢速度。

有人知道我能看到什么吗?

我的实体框架实现是数据库优先的。

【问题讨论】:

  • 您的 Azure 应用服务是否设置为“始终开启”?如果没有,您可能会看到应用程序在每个“冷”请求时启动。如果是这种情况,进入待机时限内的后续请求应该很快,一段时间后会变慢。如果您遇到这些行为,将 Always On 设置为 true 应该可以解决问题。
  • 如何分析它以检测原因是查询?似乎第一个查询正在做其他事情(应用程序启动、编译视图等)
  • 这可能是由多种因素造成的。你确定这个查询是什么问题吗?不是旋转的应用程序池或与数据库完全无关的东西?
  • 你可以写日志来检查哪个部分花费更多时间
  • 是的,我的 appService 处于 AlwaysOn 模式。我输入的日志告诉我它只是在实际查询数据库时很慢,而不是在启动等任何其他操作上。数据库中的相同查询或使用 ssms 虽然在一秒钟内执行

标签: c# azure entity-framework-6 azure-web-app-service


【解决方案1】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多