gpt4 book ai didi

c# - MVC Mini Profiler - LINQ 开销

转载 作者:太空宇宙 更新时间:2023-11-03 11:27:16 24 4
gpt4 key购买 nike

我正在使用 MVC Mini Profiler,我正在尝试衡量查询的 LINQ to SQL 部分(生成表达式树、实际 SQL 命令等)与在数据库端花费的时间的影响.

我看到“此步骤中所有查询的总持续时间(不包括 child )”。这包括 LINQ to SQL 部分和数据库调用,还是仅包括数据库部分?当单击“sql”链接以查看已运行的查询列表时,我看到了查询持续时间。同样,这包括 LINQ 部分还是仅包括数据库端?

谢谢。

最佳答案

SQL 计时只是 SQL - 因为它来自包装的 ADO.NET 连接,并且对调用者知之甚少。要获得详细的时间安排(以衡量开销),请包装您感兴趣的代码:

using(profiler.Step("Get orders")) {
orders = db.{some query}.ToList();
}

现在您有了代码单元的计时,该计时内,与它对应的 SQL 计时。因此,如果“获取订单”代码花费了 100 毫秒,而 SQL 花费了 40 毫秒,那么您就有 60 毫秒的开销。

减少开销的事情:

  • 尝试预编译查询
  • 尝试切换到ExecuteQuery<T> , 所以没有要解析的表达式树

不过,根据经验,您可能会发现这些开销中的大部分来自“物化”(即将数据库中的行转换为对象),尤其是在高吞吐量场景中。我们发现摆脱这种开销的唯一方法是使用 dapper-dot-net 作为 ExecuteQuery<T> 的替代品。 (它有一个有意相似的 API)。这样一来,我们在“获取订单”的时间和该 block 中的 SQL 时间之间几乎没有任何开销。

关于c# - MVC Mini Profiler - LINQ 开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8937671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com