Периодическая оптимизация таблиц Drupal

Увеличение быстродействия за счет дефрагментации таблиц MySQL.

При частом обновлении Drupal'ом содержимого таблиц БД MySQL, особенно служебных таблиц, последние подвергаются фрагментации, что выливается в снижение быстродействия сервера БД и скорости выполнения запросов на чтение.

Для решения проблемы необходимо периодически дефрагментировать таблицы MySQL с помощью команды OPTIMIZE TABLE. И, конечно, лучше это делать не вручную.

В общем случае необходимо, чтобы регулярно примерно 10-15 таблиц было оптимизировано. Чаще всего оптимизации требуют таблицы batch, book, cache, cache_update, cache_filter, cache_form, cache_menu, cache_page, comments, comment_notify, files, flood, history, node, node_comment_statistics, node_revisions, menu_links, search_dataset, search_total, search_index, search_node_links, sessions, term_data, term_hierarchy, term_node, upload, variable, watchdog.

В зависимости от установленных модулей ваш набор таблиц может быть иной. Не стоит оптимизировать все таблицы, потому что команда OPTIMIZE TABLE блокирует таблицы на время своей работы.

Сушествуют два способа решения проблемы: с помощью системного cron и с помощью модуля в самом Drupal'е.

1. Оптимизация через системный cron

Для оптимизации создаем скрипт optimize_table.php с кодом:

<?php
$link = mysql_connect("хост", "пользователь", "пароль")
or die("Could not connect: " . mysql_error());
mysql_select_db("имя БД");
$result = mysql_query("OPTIMIZE TABLE batch, book, cache, cache_update, cache_filter, cache_form, cache_menu, cache_page, comments, comment_notify, files, flood, history, node, node_comment_statistics, node_revisions, menu_links, search_dataset, search_total, search_index, search_node_links, sessions, term_data, term_hierarchy, term_node, upload, variable, watchdog");
?>

Помещаем вызов "php optimize_table.php" в системный cron с интервалом в час.

 

2. Использование модуля db_maintenance

Для отимизации таблиц БД используется модуль Drupal'а db_maintenance. После установки выберите таблицы, которые нужно оптимизировать при запуске cron:

Администратор > Конфигурация сайта > DB maintenance

Источники:

http://drupalcookbook.ru/recept/optimizacija-tablic-bazy-dannyh