Чистим базу данных MySql от ненужного мусора и ускоряем работу блогаВсем привет друзья. В сегодняшней статье я хочу рассказать вам, как очистить базу данных MySql от ненужного мусора и существенно ускорить работу всего блога. Не так давно, я переносил свой блог на другой хостинг (о его преимуществах написал в этой статье) и при переносе базы данных заметил, что ее размер составляет почти 57 Mb. Мягко говоря, я был удивлен, ведь перенос разных сайтов осуществлялся не один раз до этого, и тогда размеры баз составляли от 1 до 20 Mb, а сами сайты были намного больше этого блога. Откуда у блога с количеством статей меньше 200 может взяться такой огромный размер базы данных? Естественно я начал разбираться в этом деле и хочу поделиться с вами результатами своей работы.

Но перед этим давайте рассмотрим основные элементы, которые так сильно увеличивают размер нашей базы данных, и по порядку будем выполнять действия для уменьшения ее размера.

— Рост статей на блоге (здесь мы ничего оптимизировать не будем, это вполне нормальное явление у каждого развивающегося блога).

— Увеличение количества ревизий (резервные копии написанной статьи). Когда мы пишем статьи на свой блог, движок WordPress автоматически через определенные периоды времени создает резервные копии этой самой статьи. К примеру, последняя написанная мною статья на блог, получила 4 ревизии.

ревизии записей

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

Чтобы такого больше не повторялось, мы запретим нашему движку создавать резервные копии записей. Для этого откройте файл wp-config.php (он находится в корне вашего сайта) и после строки

define('DB_COLLATE', '');

вставьте следующую строку

define('WP_POST_REVISIONS', false);

которая полностью запрещает создавать резервные копии записей. В результате у вас должна получится вот такая комбинация:

код запрета создания резервных копий

Если же вы хотите чтобы ревизии постов создавались, но в строго ограниченном количестве, тогда после строки

define('DB_COLLATE', '');

вставьте строку

define('WP_POST_REVISIONS', 2);

где цифра 2 означает количество создаваемых ревизий (можете менять ее на любую цифру).

Запомните!!! Перед выполнением нижеописанных действий обязательно сделайте резервную копию базы данных. В случаи если что-то пойдет не так, вы сможете восстановить работоспособность блога в считанные минуты.

Для того, чтобы создать резервную копию базы данных, зайдите в phpMyAdmin (система управления базами данных) выберите в меню слева нужную вам базу, отметьте все таблицы и нажмите кнопку «Экспорт», после чего жмем «ОК» и сохраняем копию базы данных.

экспорт базы данных

Эти действия хороши для новых записей, а как же быть с уже опубликованными ранее записями с ревизиями? Все очень просто, заходите на своем хостинге в phpMyAdmin и в строке SQL (верхнее горизонтальное меню) выполняете данный запрос:

DELETE FROM wp_posts WHERE post_type = "revision"

и подтверждаете свои действия нажатием кнопки «ОК».

успешное выполнение запроса

Не переживайте, этот запрос удалит только резервные копии, все ваши записи останутся целыми и невредимыми.

— Рост количества комментариев на блоге. Опять-таки, если это нормальные человеческие комментарии, то все ок, тут наоборот радоваться нужно. Но, наверное, уже все знают, что на 1 нормальный комментарий, приходится около 10 спамных. Для борьбы со спамными комментариями можете прочесть вот эту статью.

Взгляните на мою статистику комментариев:

корзина комментариев

Больше 23000 комментариев находятся в корзине, и каждый из них занимает свое место в базе данных. Также есть 28 спамных комментариев.

Для того, чтобы удалить все спамные комментарии из базы, данных делаем такой SQL-запрос:

DELETE FROM wp_comments WHERE comment_approved = "spam"

Для удаления всех комментариев из корзины, выполняем такой SQL-запрос:

DELETE FROM wp_comments WHERE comment_approved = "trash"

У многих блоггеров установлен плагин Akismet который довольно хорошо ведет борьбу с назойливыми спамерами, но в свою очередь тоже нагружает базу данных. Для того, чтобы очистить таблицу wp_commentmeta (именно в эту таблицу и записывает свои данные плагин Akismet) совершим такой SQL-запрос:

DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments)

А теперь друзья, давайте все это дело свяжем воедино и скачаем плагин WP-Cleanup целью которого, является выполнение части задач, которые я описал выше, и не только их:

— ревизия постов

— удаление спам-комментариев

— удаление неодобренных комментариев

— удаление неиспользуемых тегов

— удаление неиспользуемых META-данных

— оптимизация неиспользуемой части БД

Итак, устанавливаем плагин и в консоле блоге переходим по адресу Настройки- WP-Cleanup, отмечаем чекерами все поля и жмем кнопку «Cleanup the selected items!»

использование плагина WP-Cleanup

Всего через пару секунд вы увидите примерно такое сообщение с уведомлением о выполненной работе по оптимизации:

уведомление о выполненной очистке

А теперь давайте сравним результаты до оптимизации базы данных и после.

До начала работ размер базы данных составлял почти 57 Mb, после выполнения всех операций описанных выше размер базы составил 8,7 Mb. Представьте себе, почти в 7 раз размер базы данных стал меньше.

Ну и напоследок можно еще в phpMyAdmin зайти в вашу базу данных выделить все таблицы и выбрать из выпадающего списка пункт Оптимизировать таблицу. После такой оптимизации, вес моей базы данных уменьшился еще на 300 Kb.

оптимизация таблицы

Вот так вот друзья. Кстати после проведенной оптимизации, блог стал намного быстрее загружаться, чему я, несомненно, рад.

После того, как вы оптимизировали свою базу данных, плагин можно отключить, до следующей оптимизации, примерно через 2-3 месяца.

Ну, а я буду заканчивать этот пост. Обязательно проводите чистку ваших баз, и если что-то непонятно переспросите у меня перед выполнением работ.

Все, всем пока и до новых встреч.

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
(2 голоса, в среднем: 5 из 5)