Ran*_*Des 11 .net c# profiling entity-framework visual-studio-2013
我有一个性能问题,我们做了一堆分析,并被卡住了.希望你们其中一个人之前见过这个.
我调用DbContext.Database.SqlQuery数据库部分需要3ms,但完整执行需要9秒.
我们使用EF Profiler来发现这一点,我们也直接在SQL Server Management Studio中运行SQL,它是即时的.
我们也使用了一瞥而无法深入了解这个过程.
结果类型不是模型中的实体,因此我们确信不涉及跟踪.
我们也知道这不是针对上下文执行的第一个查询,因此我们不会在此查询上支付EF启动成本.
我们尝试过.net分析器,运行它有很多问题我们决定我们应该问.
有关如何挖掘和解决这个问题的任何提示?
编辑:此查询的结果集是1行,4列(十进制)
代码行只是:
var list=contextInstance.Database.SqlQuery<nonEntityType>(sqstring).ToList();
Run Code Online (Sandbox Code Playgroud)
SQL本身不是一个很长的字符串.我们将使用更详细的分析器来找出过程中的这个问题.
我们使用 EF Profiler 来发现这一点,并且我们还直接在 SQL Server Management Studio 中运行 SQL,而且它是即时的。
这并不能证明什么。查询可能运行得很快,但数据可能会产生 100MB 的数据,然后将其传输到客户端并具体化为对象。这可能需要比您想象的更多的时间。
SSMS 中的查询可能会立即返回,因为它仅显示部分数据。你没说数据是什么。
使用真正的 .NET 分析器,例如 dotTrace 或 Ants。这样你就可以准确地看到时间在哪里被浪费了。EF Prof(或我自己的 ORM Profiler:http://www.ormprofiler.com)将告诉您所采取的总路线的哪一部分(ORM->DB->ORM)花费了多少时间。甚至 EF 教授也这样做;)
| 归档时间: |
|
| 查看次数: |
4610 次 |
| 最近记录: |