Решение проблем DotNetNuke при работе с БД

Материал из 1GbWiki.

(Различия между версиями)
Перейти к: навигация, поиск
Версия 16:14, 5 декабря 2008 (править)
Dmach (Обсуждение | вклад)
(Новая: == Отключение логов == DotNetNuke (далее DNN) по умолчанию ведёт несколько логов своей деятельности в БД: * SiteLo...)
← К предыдущему изменению
Версия 16:29, 5 декабря 2008 (править) (отменить)
Dmach (Обсуждение | вклад)
м
К следующему изменению →
Строка 10: Строка 10:
* Дополнительные расходы на запись данных в эти таблицы * Дополнительные расходы на запись данных в эти таблицы
* Резко увеличивается размер БД, таблица SiteLog может содержать миллионы записей * Резко увеличивается размер БД, таблица SiteLog может содержать миллионы записей
 +* Таблицы практически без индексов, построение отчёта по ним приведёт к пробемам
* Методы очистки этих таблиц при своём исполнении потребляют крайне много ресурсов * Методы очистки этих таблиц при своём исполнении потребляют крайне много ресурсов

Версия 16:29, 5 декабря 2008

Содержание

Отключение логов

DotNetNuke (далее DNN) по умолчанию ведёт несколько логов своей деятельности в БД:

  • SiteLog – статистика запросов к сайту, прямой аналог логов веб-сервера без учёта запросов к статическим файлам
  • EventLog – лог внутренних событий DNN, например - ошибок

К сожалению, это всё не проходит бесследно. Из негативных моментов такой работы следует отметить:

  • Дополнительные расходы на запись данных в эти таблицы
  • Резко увеличивается размер БД, таблица SiteLog может содержать миллионы записей
  • Таблицы практически без индексов, построение отчёта по ним приведёт к пробемам
  • Методы очистки этих таблиц при своём исполнении потребляют крайне много ресурсов

Также отметим, что в этих таблицах нет прямой необходимости. Статистика посещений сайта также доступна со стороны хостинга, посмотрите статью по статистике. Таблица ошибок не нужна, если ваш сайт работает исправно и не требует отладки или вмешательства программистов.

Против ведения таблицы SiteLog выступает и регламент хостинга, пункт 2.5.b как раз про это.

Как отключить?

К сожалению, мы не знаем. Обратитесь к документации по DNN. Если штатными средствами этого сделать нельзя – вам следует найти в коде DNN место ведения этих логов и в методе (функции), где исполняется INSERT-запрос на добавление данных – убрать его.

После отключения логов вам необходимо очистить таблицы от имеющихся в них данных. Не вздумайте исполнять запрос типа DELETE FROM SiteLog – в условиях удаления миллионов строк это создаст массу проблем, так как для каждой операции удаления строки будет создана запись в логе транзакций. Используйте метод очистки таблиц MSSQL без ведения лога транзакций – TRUNCATE TABLE, например:

TRUNCATE TABLE SiteLog

Запрос исполняется мгновенно и не вызывает проблем перегрузки.

Напишите нам

Если вы уже занимались проблемой оптимизации работы DNN с базой данных и выполняли действия из этой статьи или действия другого типа – напишите нам или прямо сюда сценарий решения проблем. Это поможет множеству людей и увеличит сумму счастья на планете.

Ссылки по теме

Решение проблем с запросами в Microsoft SQL Server

Личные инструменты