Решение проблем DotNetNuke при работе с БД
Материал из 1GbWiki.
Содержание |
Отключение логов
DotNetNuke (далее DNN) по умолчанию ведёт несколько логов своей деятельности в БД:
- SiteLog – статистика запросов к сайту, прямой аналог логов веб-сервера без учёта запросов к статическим файлам
- EventLog – лог внутренних событий DNN, например - ошибок
К сожалению, это всё не проходит бесследно. Из негативных моментов такой работы следует отметить:
- Дополнительные расходы на запись данных в эти таблицы
- Резко увеличивается размер БД, таблица SiteLog может содержать миллионы записей
- Методы очистки этих таблиц при своём исполнении потребляют крайне много ресурсов
Также отметим, что в этих таблицах нет прямой необходимости. Статистика посещений сайта также доступна со стороны хостинга, посмотрите статью по статистике. Таблица ошибок не нужна, если ваш сайт работает исправно и не требует отладки или вмешательства программистов.
Против ведения таблицы SiteLog выступает и регламент хостинга, пункт 2.5.b как раз про это.
Как отключить?
К сожалению, мы не знаем. Обратитесь к документации по DNN. Если штатными средствами этого сделать нельзя – вам следует найти в коде DNN место ведения этих логов и в методе (функции), где исполняется INSERT-запрос на добавление данных – убрать его.
После отключения логов вам необходимо очистить таблицы от имеющихся в них данных. Не вздумайте исполнять запрос типа DELETE FROM SiteLog – в условиях удаления миллионов строк это создаст массу проблем, так как для каждой операции удаления строки будет создана запись в логе транзакций. Используйте метод очистки таблиц MSSQL без ведения лога транзакций – TRUNCATE TABLE, например:
TRUNCATE TABLE SiteLog
Запрос исполняется мгновенно и не вызывает проблем перегрузки.
Напишите нам
Если вы уже занимались проблемой оптимизации работы DNN с базой данных и выполняли действия из этой статьи или действия другого типа – напишите нам или прямо сюда сценарий решения проблем. Это поможет множеству людей и увеличит сумму счастья на планете.