От владельцев сайтов, построенных на движке WordPress, часто можно слышать жалобы на медленную работу ресурса. Среди всех факторов, которые оказывают влияние на быстродействие, одним из основных является разрастание базы данных проекта, где постепенно накапливается «мусорные» записи. От них обычно нет никакой практической пользы, а вот для быстродействия они как раз очень вредны.
Быстродействие сайта — важный параметр, которые оценивается пользователями и поисковыми системами. Если страница долго не загружается, то рядовой посетитель просто закрывает её и переходит на другой сайт. С точки зрения поисковых систем, медленные сайты получают более низкие позиции в выдаче, что постепенно приводит к уменьшению естественного трафика и гибели проекта.
В этой статье мы объясним, как избавить базу MySQL сайта от «мусорных» записей, а также расскажем, насколько регулярно это следует делать и как это можно автоматизировать.
Почему нужна периодическая чистка базы?
Для понимания важности периодической чистки базы веб-проекта достаточно знать, что абсолютно вся информация вашего сайта хранится в ней. Речь идёт о всех публикациях, включая черновые; комментариях, которые оставляют пользователи, а также о другой технической информации.
В подавляющем большинстве случаев база состоит из нескольких связанных таблиц. В каждой из них постоянно накапливаются данные, которые можно уверенно отнести к лишним. Каждый раз когда пользователь желает перейти к нужной странице, запускается механизм поиска по базе, который перебирает её записи до тех пор, пока в ней не найдутся нужные элементы. Чем элементов, больше, тем больше вычислительной мощности сервера требуется, а следовательно скорость работы замедляется.
Чтобы наглядно представлять масштаб проблемы, рассмотрим типичный проект, в котором уже накопилось 1500 публикаций, а также в среднем по 10 комментариев к каждой из них. Таким образом, чтобы отразить нужную страницу, необходимо «прошерстить» все 1500 записей и перебрать в общей сложности 15000 комментариев.
На самом деле ситуация ещё более плачевна, чем кажется на первый взгляд. Дело в том, что записи редко хранятся в конечном виде. Часто приходится иметь дело с их многочисленными копиями, в которых содержатся точки промежуточного сохранения и черновые варианты.
Именно избавление от этого «довеска» и является основной задачей чистки базы данных. Далее в статье мы поговорим об основных приёмах, как это можно сделать.
Полезно: Data Tables Generator – что за плагин, для чего нужен, отзывы
Что удалять из БД?

Среди всех разновидностей записей в БД есть несколько основных, вклад которых в «загрязнение» является особенно ощутимым. К ним относятся:
- старые версии публикаций;
- комментарии, помеченные как «спам»;
- содержимое «корзины»;
- данные, оставшиеся удалённых плагинов.
Как раз про удаление и оптимизацию размера этих категорий лишней информации пойдёт мы расскажем более подробно.
Ручная и автоматическая чистка базы сайта
Чтобы почистить БД от лишних записей, можно пойти 2 путями. Первый из них следует отнести к ручным. Заключается он в самостоятельном формировании SQL-запросов, каждый из которых убирает тот или иной тип записей. Из-за необходимости хорошо знать язык таких запросов, ручное вмешательство в БД может быть рекомендовано только продвинутым пользователям и профессионалам.
Для рядовых администраторов сайта на WordPress проще всего воспользоваться автоматическим режимом, то есть выбрать и установить специальный плагин. В большинстве случаев после этого достаточно найти нужный пункт в меню и нажать на кнопку удаления (Delete).
Чтобы сам плагин не стал причиной замедления работы сайта, после использования его можно деактивировать или удалить. Поскольку чистку вы будете выполнять не очень часто, нужный модуль всегда можно установить вновь для решения конкретной задачи.
Резервное копирование БД

Все операции по ручной и автоматической читке вы будете проводить на «живой» базе. Поскольку она по сути и является ядром вашего сайта, очень важно подойти к этому вопросу с особой осторожностью.
Крайне не рекомендуем совершать любые операции на действующей базе из-за риска потери данных. Вместо этого предлагаем вам создать несколько резервных копий сайта, после чего потренироваться на локальном экземпляре.
Если все запланированные операции пройдут успешно, можете повторить их на «боевой» версии БД. В любом случае у вас будет актуальный бэкап, с помощью которого можно откатить все изменения и вернуться к исходному состоянию.
Для экспорта и восстановления баз данных удобно пользоваться phpMyAdmin. Также периодическое создание резервных копий можно настроить через плагины.
Чистим MySQL-базу в ручном режиме
Чтобы произвести чистку базы в ручном режиме, нам понадобиться приложение phpMyAdmin. Оно представляет собой веб-интерфейс, с помощью которого очень удобно администрировать БД проекта.
Перед началом чистки следует чётко понимать, в каких таблицах хранится лишняя информация, а также к какому типу она относится. Также обратите внимание на столбец Overhead в списке таблиц. Его содержимое отражает количество служебной информации, которая содержится в каждой конкретной таблице. Значения здесь редко достигают 0, но очень большие числа в этой колонке дают основание полагать, что чистка всё же требуется.
Чаще всего SQL-запросы составляются, чтобы удалить:
- предыдущие версии записей — post_type = ‘revision’;
- спамные комментарии — comment_approved = ‘spam’;
- кэш RSS.
Для удаления этих и других записей используется стандартная команда DELETE. После ввода сформированного запроса к БД, его выполнение следует подтвердить.
Внимательно проверьте запросы, которые отправляете на исполнение. Есть риск вместе ненужной информацией потерять нужную.
После завершения удаления вы получите сообщение, в котором будет указано количество записей, попавших под установленные условия.
Автоматическая чистка базы с использованием плагинов

Рассмотрим автоматическую читку базы сайта на примере использования плагина WP Clean Up. Установите и активируйте его привычным способом перед началом использования.
В настройках модуля вы обнаружите простую таблицу, в которой перечислены основные типы «мусорной» информации, а также счётчик таких записей. Чтобы избавиться от них, достаточно нажимать на кнопку Delete, расположенную напротив. Альтернативным вариантом быстрой чистки является использование кнопки Delete All.
После чистки не лишним будет воспользоваться опцией оптимизации данных, которая также помогает повысить быстродействие базы.
Аналогичные функции выполняют и другие плагины. Вот только самые известные и популярные из них:
- WP-DBManager;
- WP-Optimize;
- WP Clean Up Optimizer;
- WPDBSpringClean.
WP-DBManager — мощный плагин для профессионального использования. Его функционал частично повторяет phpMyAdmin, но в отличие от последнего приложения, позволяет выполнять большинство действий с базой прямо из административной консоли. Популярность плагина объясняется встроенным механизмом резервного копирования и восстановления. Запасные копии можно хранить на самом сервере или отправлять их себе по email. Для экономии места их размер легко уменьшить с помощью сжатия. Также модуль умеет восстанавливать базы и предлагает пользователю возможности по выполнению SQL-запросов и управлению таблицами. Ограничением плагина является то, что он не предназначен для читки абсолютно всего «мусора» в базе, а направлен в большей степени на служебные данные.
Модуль работает на WordPress старше 4 версии и получает регулярные обновления. По результатам 100 тыс. установок пользователи оценили его на 4,4 балла.
WP-Optimize — простой интерфейс и многофункциональность сделали этот плагин для оптимизации БД одним из самых популярных среди аналогов. Пользователи, которые скачали его уже более 1 млн. раз поставили ему среднюю оценку 4,8 балла.
Большую часть «мусорной» информации здесь можно удалить одной кнопкой. Чтобы не возвращаться к очистке каждый раз, можно запланировать её регулярное выполнение. Также модуль наглядно показывает информацию по таблицам и умеет считать сколько памяти получится освободить в результате оптимизации.
Плагин совместим с версиями WordPress от 4.4 до 5.6.1 и умеет выполнять другие действия по оптимизации производительности сайта, например, сжимать картинки.
Встроенного инструмента создания бэкапов здесь не предусмотрено, но их можно создавать с помощью сторонних модулей.
WP Clean Up Optimizer — этот плагин появился относительно недавно и ещё не успел набрать большую пользовательскую базу. Всего его скачали 5 тыс. раз и оценили на 4,1 балла.
Модуль может справиться с обширным списком лишних записей, которые удаляются одним кликом. Базовая версия поддерживает только начальный функционал, то есть большинство операций необходимо будет выполнять вручную. В расширенной версии есть возможности запланировать читку и оптимизацию с нужной периодичностью. В целях безопасности обе версии поддерживают ограничение на попытки логина.
WPDBSpringClean — плагин специально предназначен для поиска и удаления в базе данных таблиц, которые остались от других плагинов. Необходимость его создания была продиктована тем фактом, что большинство из сторонних модулей даже после удаления продолжают хранить на сайте свои данные. WPDBSpringClean позволяет находить пустые таблицы с заданными параметрами. Пользуйтесь им с осторожностью, чтобы случайно не удалить ценную информацию. За несколько лет существования модуль успели скачать около 2 тыс. раз и оценили его 4,5 баллов.
Регулярность чистки базы

Начинающие пользователи часто задаются вопросом о том, насколько часто нужно чистить базу? Однозначного ответа на него нет. Всё зависит от посещаемости самого проекта, а также периодичности появления новых публикаций. Чем чаще на сайте появляются новые статьи, чем больше комментариев они собирают, тем чаще необходимо производить чистку. Например, нагруженные проекты можно профилактически чистить хоть каждый день. В свою очередь сайты с несколькими новыми статьями в месяц могут длительное время обойтись и вовсе без чистки, особенно если правильно настроить их параметры.
Полезно: Топ-10 шаблонов ВП для образовательных учреждений
Профилактика загрязнения БД
Большинство из описанных выше действий по очистке базы можно выполнять очень редко или не выполнять вовсе, если оптимизировать некоторые настройки сайта.
Например, можно ограничить количество сохраняемых версии публикаций до 3 или сократить количество дней до автоматической очистки «корзины», установив значение 5. Для этого необходимо внести небольшие правки в файле wp-config.php. Здесь нас интересуют строки, в которых есть следующие ключевые слова: WP_POST_REVISIONS и EMPTY_TRASH_DAYS. Задайте для них свои значения и наслаждайтесь высоким быстродействием базы длительное время. Без этих настроек WordPress продолжал бы хранить все старые версии статей, а также удерживал содержимое «Корзины» в течение месяца.
Для борьбы с комментариями, содержащими спам, используйте модуль Akismet. Его преимуществом является возможность задать более короткий промежуток времени для избавления от этого «мусора». По умолчанию, WordPress не удаляет спам целых 30 дней.
Заключение
Удаление «мусора» из базы данных сайта позволяет поддерживать её производительность на приличном уровне. Чисткой необходимо заниматься с периодичностью, которая определяется масштабом проекта. Чистить и оптимизировать БД можно как в ручном, так и автоматическом режиме. Очень удобно пользоваться для этого специальными плагинами. Результатом чистки является уменьшение размера базы. В итоге на выполнение запросов данных из неё уходит меньше времени, а сайт работает быстрее.