【问题标题】:Miniprofiler: site is inexplicably fastMiniprofiler:网站速度莫名其妙
【发布时间】:2011-07-04 02:02:39
【问题描述】:

我们安装了 miniprofiler。这是一次启发性的体验,但现在我们看到,启用探查器后,我们的数据库查询运行速度是禁用探查器时的 3 倍。

我们在应用程序中更改的唯一代码是添加 profiledDbConnection:

public static DbConnection GetOpenConnection(string connectionString)
{
    var cnn = new System.Data.SqlClient.SqlConnection(connectionString);  
    // wrap the connection with a profiling connection that tracks timings 
    return MvcMiniProfiler.Data.ProfiledDbConnection.Get(cnn, MiniProfiler.Current);
}

Linq2Sql 突然……快了。

我没有抱怨,但为什么会这样?

【问题讨论】:

  • 唯一想到的可能是添加 ProfiledDbConnection 导致查询返回缓存项,但这是一个完全的猜测......
  • 我们没有做任何事情来加速性能,预期是启用分析后性能会稍微慢一些。由于此命中仅影响一小部分用户(开发人员),因此是可以接受的。
  • 这是我所期望的……但这不是我们观察到的。一方面,我感到困惑。
  • 它运行更快?哇,这个分析器非常棒,不是吗?
  • 我的情况正好相反。我正在使用 EF,它为大多数 Linq 语句增加了大约 300 毫秒。问题在这里:stackoverflow.com/questions/6439827/…

标签: mvc-mini-profiler


【解决方案1】:

“数据库查询运行速度提高 3 倍”是什么意思?

  1. 如果您运行 SQL Profiler - 您是否看到 db 执行时间减少了 3 倍?
  2. 在您的代码中执行最终查询数据库的高级方法的时间要低 3 倍?

如果是案例 1,那么差异将出现在生成的 SQL 中 - 比较两个语句。 如果是情况 2,则运行 C# 分析器(Ants、dotTrace)并比较所有方法的执行时间。

这种量级的差异将与完全不同的执行路径有关 - 也许您没有进行繁重的循环,或者您正在从缓存中获取数据。

首先,您可以验证您是否完全访问数据库并且查询的数量完全相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 2012-03-12
    • 2019-02-04
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多