Минипрофилер: сайт невероятно быстр - PullRequest
8 голосов
/ 28 июня 2011

Установлен минипрофилер.Это был поучительный опыт, но теперь мы видим, что запросы к нашей базе данных выполняются в 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 внезапно ... быстро.

Я не жалуюсь, но почему это происходит?

1 Ответ

5 голосов
/ 03 июля 2011

Что вы подразумеваете под «запросы к базе данных выполняются в 3 раза быстрее»?

  1. Если вы запускаете SQL Profiler - видите ли вы, что время выполнения БД в 3 раза меньше?
  2. Время выполнения высокоуровневого метода в вашем коде, который в конечном итоге запрашивает базу данных, в 3 раза меньше?

Если это случай 1, тогда разница будет в сгенерированном SQL - сравните оба оператора. Если это случай 2, запустите профилировщик C # (Ants, dotTrace) и сравните время выполнения всех методов.

Разница в этой величине будет связана с совершенно другим путем выполнения - возможно, вы не выполняете тяжелый цикл или получаете данные из кэша.

Прежде всего вы можете убедиться, что вы обращаетесь к базе данных и количество запросов точно такое же.

...