Я увидел интересную ссылку о Linq-To-Sql:
Более эффективный доступ к базе данных
Глядя на мой собственный код, я понял, что я также не выбрасывал DataClassesDataContext
. Это проблема? Я не знаю, но я продолжил поиск по своему коду и добавил using (DataClassesDataContext db = new DataClassesDataContext())
по всему коду.
Теперь вот интересная вещь. Мы регистрируем почти каждый доступ к странице и транзакции в нашем коде. Теперь у меня есть блок кода, который выглядит следующим образом:
protected WriteLog(String activity)
{
using (DataClassesDataContext db = new DataClassesDataContext())
{
... Do db write with Linq
}
}
Это очень интенсивно используемая функция со скоростью не менее 50 вызовов в секунду в любое время. Поэтому, прежде чем предположить, что мы пострадали от потенциальных «утечек», что является проблемой. Но теперь нам кажется, что мы не будем пропускать ресурсы БД, а вместо этого будем тратить много времени только на открытие и закрытие соединений с базой данных. Это не может быть правдой, не так ли? Приведенный выше код теперь открывает и закрывает соединение с БД для каждой отдельной записи журнала нашими пользователями , добавляя еще больше накладных расходов, чем просто оставляя DataClassesDataContext для сбора мусора в будущем?