【发布时间】:2019-02-13 13:42:52
【问题描述】:
我的 MVC 解决方案中有一个 EF 6.2 项目。
这使用了一个 SQL 服务器数据库,并且有大约 40 个带有许多外键的表。
第一次查询很慢,20秒。
我立即再次点击同一页面,更改用户参数,查询时间不到 1 秒。
所以这看起来像是 EF6 中的一个预热问题。没关系,我可以做很多事情来进行排序。
- 模型缓存(EF6.2 的一部分)看起来可能是有益的,但我读到的任何地方都首先声明模型。首先没有关于数据库的内容。这仍然可以先使用 db 吗?
- 还有 Entity Framework 6 电动工具,这些工具允许我生成视图。试过这个,它似乎没有任何区别。这仍然是一条有效的路线吗?
- 还有其他想法吗?
【问题讨论】:
-
查询是否是服务器需要编译的SP(可能带有重新编译选项)?它只是第一次还是总是具有特定的价值?加速可能是数据库从磁盘检索数据,如果内容已经缓存,则以下可能会很快。它真的是数据库还是可能是另一个 MVC 资源?
-
它是实体框架,根本没有使用任何 SP。总是在发布后的第一次,或者如果网站已经有一段时间了。
-
谢谢,是的,我已经读过了,但它没有回答我提出的两个主要问题。
-
我想知道查询有多复杂?它有很多包含吗?我发现从初始查询中取出包含然后单独调用它们可以显着提高性能,尤其是在应用重启后。
标签: sql-server entity-framework warm-up