8

ミニプロファイラーをインストールしました。これは有益な経験でしたが、今では、データベース クエリが、プロファイラーを有効にした場合と無効にした場合の 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 プロファイラーを実行すると、データベースの実行時間が 3 分の 1 になっていることがわかりますか?
  2. 最終的にデータベースにクエリを実行する高レベルのメソッドをコードで実行する時間は 3 分の 1 になりますか?

ケース 1 の場合は、生成された SQL に違いがあります - 両方のステートメントを比較してください。ケース 2 の場合は、C# プロファイラー (Ants、dotTrace) を実行し、すべてのメソッドの実行時間を比較します。

この大きさの違いは、まったく異なる実行パスに関連しています。重いループを実行していないか、キャッシュからデータを取得している可能性があります。

まず、データベースにヒットしているかどうか、クエリの数がまったく同じかどうかを確認できます。

于 2011-07-03T18:02:39.730 に答える