Чистим базу данных 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!»

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

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

Вот так вот друзья. Кстати после проведенной оптимизации, блог стал намного быстрее загружаться, чему я, несомненно, рад.
Ну, а я буду заканчивать этот пост. Обязательно проводите чистку ваших баз, и если что-то непонятно переспросите у меня перед выполнением работ.
Все, всем пока и до новых встреч.
и получай самую свежую информацию на свой e-mail!
Свежая информация в сфере SEO:
Увидела новость вконтакте и сразу прибежала прочитать новую статью)))
Очень полезная информация! Спасибо, я как раз с Базами Данных сейчас копаюсь, что и к чему там)) Пытаюсь выявить, что то для себя новое. Мне эта статья кстати!
Пойду экспериментировать, если появятся вопросы, вернусь)
PS
new blog in the signature 😉 Еще не оптимизирован.
Ну вот, начало положено. Я вас поздравляю Анна, так держать 😉
P.S. И не останавливайтесь, как-бы не было трудно. Знаю по себе, сначала очень тяжело, главное перебороть себя и двигаться дальше.
Спасибо большое за поддержку 🙂
Буду следовать вашим советам =)
И мне как раз нужно это. Все под рукой, сильно повезло новичкам
Статья ещё раз показала — как много и упорно нужно работать над своим блогом. И только тем блоггерам и сопутствует удача.
Удивляюсь знаниям Александра, откуда столько знает.
Ну я думаю тоже обучался и обучается.Много читает вот и много знает.
Спасибо за статью, я как раз капался в ней. Кое-что не знал. А так сам раньше разбирался, думал что я могу всё, но видемо не всё. 😉 😀
Уже установлен этот плагин, удобный =)
Да удобный. Когда от тебя на почту реквизиты и логины получу, 11 число уже. Жду.
P.S. Нужно будет со следующего месяца ввести временные рамки. К примеру если до 10 числа после оглашения победителей в конкурсе комментаторов, кто-то из участников не отписался, его приз аннулируется.
Выполнила запрос по чистки резервных копий, удалилось 172 строки 😛
Плагин еще не скачивала, пока руки не дошли.
Спасибо за статью, оч полезно было, не знала об этом.
Про удаление спамных комментариев из базы данных никогда и не задумывался. Хотя когда-то статью читал вроде про это. А вот запретить движку создавать резервные копий я как то делал.
Александр вопрос: А вот когда захочешь пере сохранить статью? Не будет ли он влиять на это сохранения. 😳
Не совсем понял вопрос, в смысле пересохранить? Если сделать изменения в статье прямо с движка, а потом нажать кнопку «Обновить», то сама статья просто обновится и все. Это не создаст резервную копию.
Снова решил посетить этот пост. Всё время наскоком читаем, бывает упускаем главное в теме. То есть ещё внимательно почитал, про плагин WP-Cleanup из виду упустил, у меня его нет на блоге. Сегодня установлю себе. 😳
Привет всем.
База данных это самое главное на сайте, ведь в ней хранится вся информация сайта и настройки. Периодически чистить и оптимизировать базу нужно обязательно. А так же следует поставить плагин который бы отсылал базу к вам на почту еженедельно или по времени кому как лучше. В любом случае у вас на почте будет лежать копия вашей базы на всякий случай.
Еще нужно не забывать делать резервную копию! Меня она когда то спасла!
Поэтому, Александр отдельно напомнил о том, что необходимо делать резервную копию. Иначе , можно и сайт потерять.
А у меня автоматически бекапится база.
Но я и ручками полностью переодически сохраняю.
То есть если база забита различным мусором то это может негативно сказаться на его работе? На скорости загрузки?
Конечно.
А так оно и происходит.Ну так чистить нужно.
Нужно и себе уже почистить блог, а то притормаживает что-то!
К большому сожалению, мне так и не удалось поставить запрет ревизий в файле вп-конфиг. Несколько попыток всегда приводили к белому экрану. 🙁 Не знаю, почему. Так и бросила затею и теперь чищу каждую неделю вручную.
Сложная наука, этот Вордпресс. Когда я только собиралась сделать блог, мне говорили: «Все просто — установи ВП и никаких больше проблем, публикуй и радуйся». А оказалось, что чем больше его узнаешь, тем больше возни.
Переодически чистию,но с плагином лучше.
Какую команду надо написать чтобы удалить комментарий оставленный на сайте год назад?
Смотря на чьем сайте.Если на своем,то без команды удалите)))
А если на чужем,то просить автора нужно об удалении.
У меня когда был сайт на WordPress, я тоже часто чистил свою базу данных от мусора. Но блин я не как не смог продвинуть свой блог, и решил выучить php и mysql и переписать сайт с нуля. Теперь мне не нужно чистить свою базу данных, потому что самописный движок не засоряет базу данных и не дублирует страницы, что очень удобно.