gpt4 book ai didi

.net - 从 LinqToSql 获取查询与映射速度?

转载 作者:行者123 更新时间:2023-12-01 11:03:42 27 4
gpt4 key购买 nike

有没有一种方法可以分析 LinqToSql,以便我可以看到查询在数据库中花费了多长时间,以及映射到对象需要多长时间?

据我从 SQL Profiler 判断,我的查询速度快如闪电,但应用程序端的调用速度很慢,我想知道是不是 DataReader > Objects 映射速度慢。

最佳答案

欢迎来到我们的世界!是的,我们也看到了这一点。在衡量方面,我们编写了 MvcMiniProfiler,使其可以包装标准的数据库连接/命令/阅读器等(因为 ADO.NET 对装饰器相当友好);所以我们可以通过以下方式测量 LINQ 开销:

using(MiniProfiler.Current.Step("Getting awesome data")) {
var data = {your query that materializes data, i.e. ToList() etc }
}

然后 MvcMiniProfiler 将向您显示“获取很棒的数据”的时间等,以及在 SQL 查询等方面花费的时间。

我们发现即使在使用 ExecuteQuery<T>(sql, args) 时也经常会有很大的差距。 ,这(连同一些 CPU 事件探测)让我们强烈怀疑物化是罪魁祸首(特别是在高使用率下运行时;例如,我们可以看到,由于开销,一个 4 毫秒的查询花费了 80+ 毫秒 - 所以损失了 76 毫秒到 LINQ)。因此,我们编写了 dapper-dot-net,它在削减物化成本方面做得非常出色。一个 4 毫秒的查询再次需要 4 毫秒。

举个例子:

enter image description here

cols 是(我只包括了 2 行,所以没有标题):

步骤名称 |这一步的时间(毫秒) |从开始的偏移量(毫秒) |数据库 |时间(毫秒)

如您所见,运行 sql 需要 1.3 毫秒,步骤需要 1.8 毫秒,因此开销为 0.5 毫秒。 “1 sql”实际上是指向已执行的 sql(带有参数/值)的超链接。您可以在生产环境中 24x7 无痛地运行它(....我们这样做)。

关于.net - 从 LinqToSql 获取查询与映射速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8241223/

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