»  Оптимизация  »  Как очистить и оптимизировать Базу данных WordPress

Как очистить и оптимизировать Базу данных WordPress

Если у вас есть сайт на Вордпресс, и вы давно или вообще никогда не чистили его базу данных, то сейчас самое время это сделать.

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

Очистка и оптимизация базы данных Вордпресс

В этом посте вы узнаете несколько SQL запросов для очистки и оптимизации базы вручную, и обзор нескольких плагинов для очистки базы автоматически в обычной WordPress установке и для Мультисайта.

Как работает база данных, общая информация о базе данных.

Перед тем как начать сделайте бэкап. Если что-то пойдет не так, вы сможете вернуться к сохраненной версии.

Содержание:

Как делать SQL запросы к базе данных

Запросы

База данных новой установки Вордпресс 4.8.1 для сравнения
Оптимизация таблиц
Плагины WordPress для оптимизации базы данных

Описание некоторых терминов, которые используются БД

Удалите неиспользуемые плагины. Удалите все плагины, которые вы не используете. Остатки от удаленных плагинов — один из источников мусора.

Как делать SQL запросы к базе данных

Для администрирования БД обычно используется приложение phpMyAdmin. У меня это приложение запускается из хостинг панели, у вас должно быть так же. Найдите «База данных», «Database», «MySQL» или что-нибудь подобное. Откройте нужную базу данных.

Если вы забыли или не знаете название, логин или пароль к своей базе данных, то узнать их можно в файле wp-config.php, он находится в корневой папке сайта. Записи о БД находятся в самом начале файла.

Если у вас русский язык:

Если у вас английский язык:

имя-базы-данныхлогин-для-входа-в-БДпароль-БД — скопируйте логин и пароль и откройте базу данных.

Откройте вкладку SQL и создайте свой запрос в этом окне. Документация.

SQL запрос к базе данных

Создавайте запросы в этом окне. Когда запрос готов, нажимайте Вперед.

Если вы получили ответ, что 0 таблиц было изменено, значит, текущее состояние параметра соответствует запросу.

ЗАПРОСЫ

Удаление данных от удаленных плагинов и данные постов

После удаления ненужных плагинов в таблице wp_postmeta могут остаться записи от них. В этой же таблице находятся мета данные постов.

Создайте запрос к этой таблице для удаления неиспользуемых записей плагинов и постов, которые остались после удаления плагинов или постов.

DELETE FROM wp_postmeta WHERE meta_key = ‘ваш-мета-ключ‘;

Замените ваш-мета-ключ на нужное значение.

Для мультисайта:

DELETE FROM wp_#_postmeta WHERE meta_key = ‘ваш-мета-ключ‘;

Измените # на ID сайта и ваш-мета-ключ на нужное значение.

Удаление спам комментариев

Удалить весь спам из БД можно этим запросом:

DELETE FROM wp_comments WHERE comment_approved = ‘spam‘;

Для мультисайта:

DELETE FROM wp_#_comments WHERE comment_approved = ‘spam‘;

Измените # на ID сайта.

Удаление комментариев, ожидающих проверки

Если у вас много спама, ожидающего проверки, вы можете удалить его этим запросом. Перед удалением проверьте, чтобы не удалились нужные комментарии.

DELETE FROM wp_comments WHERE comment_approved = ‘0‘;

Для мультисайта:

DELETE FROM wp_#_comments WHERE comment_approved = ‘0‘;

Измените # на ID сайта.

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

Если у вас есть теги, которые не связаны ни с одной статьей, вы можете удалить их этим запросом:

DELETE FROM wp_terms wt
INNER JOIN wp_term_taxonomy wtt ON wt.term_id = wtt.term_id WHERE wtt.taxonomy = ‘post_tag’ AND wtt.count = 0;

Для мультисайта:

DELETE FROM wp_#_terms wt
INNER JOIN wp_term_taxonomy wtt ON wt.term_id = wtt.term_id WHERE wtt.taxonomy = ‘post_tag’ AND wtt.count = 0;

Измените # на ID сайта.

Удаление Trackback и Pingback

Если вы выключили эти функции и хотите удалить их записи из базы данных, используйте эти запросы:

Trackback

DELETE FROM wp_comments WHERE comment_type = ‘trackback‘;

Для мультисайта:

DELETE FROM wp_#_comments WHERE comment_type = ‘trackback‘;

Измените # на ID сайта.

Pingback

DELETE FROM wp_comments WHERE comment_type = ‘pingback‘;

Для мультисайта:

DELETE FROM wp_#_comments WHERE comment_type = ‘pingback‘;

Измените # на ID сайта.

Выключить эти функции в WordPress можно в Настройках -> Обсуждения.

Удаление ревизий постов

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

DELETE a,b,c FROM wp_posts a
LEFT JOIN wp_term_relationships b ON ( a.ID = b.object_id)
LEFT JOIN wp_postmeta с ON ( a.ID = c.post_id)
LEFT JOIN wp_term_taxonomy d ON ( b.term_taxonomy_id = d.term_taxonomy_id)
WHERE a.post_type = ‘revision’
AND d.taxonomy != ‘link_category’

Для мультисайта:

DELETE a,b,c FROM wp_#_posts a
LEFT JOIN wp_#_term_relationships b ON ( a.ID = b.object_id)
LEFT JOIN wp_#_postmeta с ON ( a.ID = c.post_id)
LEFT JOIN wp_#_term_taxonomy d ON ( b.term_taxonomy_id = d.term_taxonomy_id)
WHERE a.post_type = ‘revision’
AND d.taxonomy != ‘link_category’

Замените # на ID сайта.

Удаление шорткодов плагинов и тем

Если вы пользовались каким-то плагином, который вставляет шорткоды, или вы сменили тему, в которой были встроены шорткоды, то теперь шорткоды появятся на сайте в виде текста. Чтобы удалить все записи о шорткодах из базы данных, сделайте этот запрос:

UPDATE wp_post SET post_content = replace(post_content, ‘[ваш-шорткод]‘, »);

Для мультисайта:

UPDATE wp_#_post SET post_content = replace(post_content, ‘[ваш-шорткод]‘, »);

Измените # на ID сайта.

Удаление постов старше Х дней

Если вашему сайту несколько лет, у вас может быть много неактуальных постов, которые вы хотели бы удалить. Если вы хотите удалить посты старше Х дней, используйте этот запрос:

DELETE FROM ‘wp_posts’
WHERE ‘post_type’ = ‘post’
AND DATEDIFF(NOW(),’post_date’) > X-дней

Замените X-дней на нужное кол-во дней, например, 730.

Для мультисайта:

DELETE FROM ‘wp_#_posts’
WHERE ‘post_type’ = ‘post’
AND DATEDIFF(NOW(),’post_date’) > X-дней

Не забудьте изменить # и X-дней.

Удаление других комментариев

Иногда некоторые плагины добавляют комментарии в таблицу wp_commentsmeta вместо wp_comments. Если вы хотите очистить эту таблицу, используйте этот запрос:

SELECT FROM wp_commentsmeta WHERE comment_id
NOT IN (
SELECT comment_id
FROM wp_comments
);

Если вы хотите очистить таблицу wp_commentsmeta на другом сайте в сети, используйте этот запрос:

SELECT FROM wp_#_commentsmeta WHERE comment_id
NOT IN (
SELECT comment_id
FROM wp_#_comments
);

Замените # на ID сайта.

База данных новой установки Вордпресс 4.8.1 для сравнения

Оптимизация таблиц

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

В phpMyAdmin выберите нужную базу данных, спуститесь в самый низ, нажмите Отметить все и выберите Оптимизировать таблицу в выпадающем меню. Нажимать «Вперед» не нужно, как только вы выберете Оптимизировать таблицу, оптимизация начнется автоматически.

Оптимизировать таблицу

Если ваша базы данных не помещается на одной странице, т.е. продолжается на 2-й, 3-й и так далее, то вам нужно оптимизировать таблицы на каждой странице. Можно оптимизировать все таблицы, или только самые большие по размеру. Размер таблицы указывается в столбце Размер.

База данных MySQL оптимизирована

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

Плагины WordPress для оптимизации базы данных

Плагинов для оптимизации довольно много, но я выбрал 4 и расположил их в порядке увеличения сложности, или в порядке увеличения функционала.

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

WP Sweep

Плагин очистки и оптимизации базы данных Вордпресс

WP Sweep (бесплатный) очищает базу данных от неиспользуемых и служебных данных и оптимизирует базу данных. Плюс этого плагина в том, что для оптимизации он использует стандартные функции удаления Вордпресс. Все просто и безопасно. Минус в том, что в нем нет расписания для автоматического сервиса.

WP Optimize

WP-Optimize Плагин очистки и оптимизации базы данных Вордпресс

WP Optimize (бесплатный) — делает все то же самое, но в нем есть автоматическое расписание очистки и оптимизации БД. Для оптимизации базы данных он использует прямые запросы к базе данных, что может оставить после себя некоторый мусор. Настроек минимум, безопасен, подходит для новичков. Более миллиона установок, часто обновляется, написан командой известных разработчиков.

Advanced Database Cleaner

Advanced Database Cleaner Плагин очистки и оптимизации базы данных Вордпресс

Advanced Database Cleaner (бесплатный) аналогичен предыдущему, но есть мощный инструмент редактирования базы данных вручную, редактирования cron-расписания и редактирования таблицы options базы данных. Плюс в том, что есть все, что нужно, некоторый минус в том, что для оптимизации используются прямые запросы к базе данных. Подходит для продвинутых пользователей.

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

Advanced Database Cleaner Pro

Advanced Database Cleaner Pro (платный) показывает, чему соответствует каждая запись в базе данных.

Advanced Database Cleaner Pro Плагин очистки и оптимизации базы данных Вордпресс

Хороший мощный инструмент.

Описание некоторых терминов, которые используются БД.

Orphan post meta. Когда вы создаете новый пост, у него появляются мета данные. Это Автор поста, Категория поста и дата публикации или изменения. В некоторых случаях эти мета данные могут остаться в базе данных неудаленными и не относящимися ни к одному посту. Такие данные называются orphan post meta, их надо удалять.

Orphan comment meta. То же самое, что post meta, — комментарии, которые не относятся ни к одному посту. Нужно удалять.

Orphan relationships. Иногда таблица wp_term_relationships начинает наполняться связями между постами, которые связывали удаленные посты. Это происходит когда у вас на сайте много контента, который удаляется время от времени. Со временем этих записей может накопиться очень много, что будет занимать место в базе данных. Удаляйте.

Dashboard transient feed. Это временные данные, которые хранятся в базе данных и имеют ограничение на существование во времени, после которого они будут удалены.

Очистка и оптимизация базы данных ускорит ваш сайт и сделает работу с бэкапом быстрее. На больших сайтах с высокой посещаемостью из-за большого количества мусора можно добиться значительного увеличения производительности БД.

Этот пост по оптимизации базы данных — часть поста об Ускорении и оптимизации сайта на Вордпресс, переходите и читайте как еще можно оптимизировать сайт.

***

Если вы знаете еще какие-то способы оптимизации базы данных — поделитесь ими в комментариях.

Оставьте комментарий