2011-06-27 3 views
8

ミニプロファイターがインストールされています。それは巧みな経験でしたが、現在は、無効にした場合と同じように有効になっているプロファイラを使用して、データベースクエリが3倍速く実行されることがわかります。Miniprofiler:サイトがわかりにくい

我々は我々のアプリで変更のみコードが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が...突然高速です。

私は不平を言っていませんが、なぜこのようなことが起こっていますか?

+2

ProfiledDbConnectionを追加するとクエリがキャッシュされたアイテムを返す原因になっている可能性がありますが、それは全体の推測です。 –

+4

パフォーマンスを加速するために何もしません。プロファイリングが有効になっているときに少し遅くなることがあります。このヒットはユーザー(開発者)のほんの一部にしか影響しないため、受け入れられます。 –

+0

これは私が期待していたものですが、それは私たちが観察していることではありません。私は、1つは、困惑しています。 –

答えて

5

「データベースクエリは3倍高速に実行されます」とはどういう意味ですか?

  1. SQLプロファイラを実行している場合、データベースの実行時間が3倍も短いことがわかりますか?
  2. 最終的にデータベースを照会するコードで高レベルメソッドを実行する時間が3時間遅くなりますか?

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

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

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

関連する問題