Решение проблем 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 с базой данных и выполняли действия из этой статьи или действия другого типа – напишите нам или прямо сюда сценарий решения проблем. Это поможет множеству людей и увеличит сумму счастья на планете.