2011-06-27 35 views
8

我們安裝了miniprofiler。這是一個令人愉快的體驗,但現在我們看到,我們的數據庫查詢在啓用Profiler的情況下運行速度爲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

這是我的預期......但那不是我們正在觀察的。對我來說,我很困惑。 –

回答

5

你是什麼意思'數據庫查詢運行速度快3倍'?

  1. 如果您運行SQL事件探查器 - 您是否看到數據庫執行時間降低了3倍?
  2. 在您的代碼中執行最終查詢數據庫的高級方法的時間要低3倍?

如果是第1種情況,則會在SQL中產生差異 - 比較兩個語句。 如果情況2比運行C#profiler(Ants,dotTrace)並比較所有方法的執行時間。

這種大小的差異將與完全不同的執行路徑有關 - 也許你沒有做一個沉重的循環,或者你從緩存中獲取數據。

首先,您可以驗證您是否正在查詢數據庫並且查詢數完全相同。

相關問題