8

我们安装了 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 突然……快了。

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

4

1 回答 1

5

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

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

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

这种幅度的差异将与完全不同的执行路径有关——也许你没有做一个沉重的循环,或者你正在从缓存中获取数据。

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

于 2011-07-03T18:02:39.730 回答