Techbear
Сайт для тех, кто хочет использовать Вордпресс по максимуму, но не хочет разбираться в коде.
Если вы давно не чистили базу данных, то в ней накопилось много неиспользуемых записей, которые увеличивают ее размер и замедляют сайт.
В этой статье вы узнаете, как очистить и оптимизировать базу данных с помощью SQL запросов в приложении phpMyAdmin на хостинге, и как очистить и оптимизировать базу данных с помощью плагинов.
Перед началом работы сделайте бэкап. Если что-то пойдет не так, вы сможете восстановить базу данных из бэкапа.
Содержание:
Как делать SQL запросы к базе данных
Оптимизация базы данных
База данных свежей установки Вордпресс 4.9.8 для сравнения
Плагины WordPress для оптимизации базы данных
Удалите неиспользуемые плагины. Удалите все плагины, которые вы не используете. Остатки от удаленных плагинов — один из источников мусора.
Для администрирования БД чаще всего используется приложение phpMyAdmin, которое находится на хостинге. Найдите «База данных», «Database», «MySQL» или что-нибудь подобное. Откройте нужную базу данных.
Если вы забыли или не знаете название, логин или пароль к своей базе данных, то их можно узнать в файле wp-config.php, который находится в корневой папке сайта. Записи о базе данных находятся в самом начале файла.
Если у вас русский язык:
Если у вас английский язык:
имя-базы-данных
, логин-для-входа-в-БД
, пароль-БД
— скопируйте логин и пароль и откройте базу данных.
Запросы создаются на вкладке 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 сайта.
Если вы отключили эти функции и хотите удалить их записи из базы данных, используйте эти запросы:
DELETE FROM wp_comments WHERE comment_type = 'trackback';
Для мультисайта:
DELETE FROM wp_#_comments WHERE comment_type = 'trackback';
Измените # на ID сайта.
DELETE FROM wp_comments WHERE comment_type = 'pingback';
Для мультисайта:
DELETE FROM wp_#_comments WHERE comment_type = 'pingback';
Измените # на ID сайта.
Каждый раз, когда вы нажимаете Обновить, создается еще одна ревизия страницы. По умолчанию, в Вордпресс сохраняется неограниченное количество копий.
Сохраненные версии постов хранятся в базе данных. Если у вас большой сайт, большое количество ревизий сильно увеличивает ее размер. Чтобы удалить их все, используйте этот запрос:
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-дней на нужное число дней.
Для мультисайта:
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 сайта.
Вы можете оптимизировать таблицы базы данных без использования плагинов.
В phpMyAdmin выберите нужную базу данных, спуститесь вниз, нажмите Отметить все и выберите Оптимизировать таблицу в выпадающем меню. Нажимать «Вперед» не нужно, оптимизация начнется автоматически.
Если ваша базы данных не помещается на одной странице, то вам нужно оптимизировать таблицы на каждой странице. Можно оптимизировать все таблицы, или только самые большие по размеру. Размер таблицы указывается в столбце Размер.
Пустой результат означает, что ничего не было оптимизировано, потому что таблицы уже оптимизированы плагином, который установлен на сайте.
Реклама
Простой способ выгодно купить полис
Сделайте бэкап базы данных перед использованием этих плагинов. Некоторые из плагинов удаляют посты, имеющие статус Черновик. Убедитесь, что все Черновики опубликованы.
WP Sweep (бесплатный) очищает базу данных от неиспользуемых и служебных данных и оптимизирует базу данных. Самый простой плагин, все просто и безопасно. Минус в том, что нет расписания для автоматического сервиса.
WP Optimize (бесплатный) — делает то же самое, но в нем есть автоматическое расписание очистки и оптимизации БД. Для оптимизации базы данных он использует прямые запросы к базе данных и оставляет после себя некоторые записи. Минимум настроек, подходит для новичков.
У плагина более 1 миллиона установок, регулярно обновляется, написан группой известных разработчиков.
В одной из последних версий в плагине появилось кеширование на уровне функционала плагина WP Super Cache и сжатие изображений.
Advanced Database Cleaner (бесплатный) аналогичен предыдущему, но есть мощный инструмент редактирования базы данных вручную, редактирования cron-расписания и редактирования таблицы options базы данных. Плюс в том, что есть все, что нужно.
Этот плагин, так же как и предыдущие, пропускает некоторые записи (например, от удаленных плагинов), которые можно очистить только вручную. Для того, чтобы очистить вручную, нужно знать, чему соответствует каждая запись в базе данных.
Advanced Database Cleaner Pro (платный) имеет весь функционал бесплатного плагина и показывает, чему соответствует каждая запись в базе данных.
Хороший плагин.
WP Rocket — один из лучших плагинов кеширования для Вордпресс, с помощью которого вы можете получить 98-100 баллов по тесту скорости Google.
Кроме своей основной работы, плагин очищает и оптимизирует базу данных вручную или по расписанию. Выберите, какие записи вы хотите удалять и частоту очистки.
Orphan post meta. Когда вы создаете новый пост, у него появляются мета данные, — Автор поста, Категория поста, дата публикации и изменения. Иногда после удаления поста эти мета данные остаются в базе данных и не относятся ни к одному посту.
Orphan comment meta. Комментарии, которые не относятся ни к одному посту.
Orphan relationships. Таблица wp_term_relationships содержит записи о связях между постами. Если вы удалили этот контент, то связи между удаленными страницами остаются в этой таблице.
Dashboard transient feed. Это врéменные данные, которые хранятся в базе данных и имеют срок существования, после чего удаляются.
В теории база данных может быть сколько угодно большой.
Различные компоненты сайта будут обращаться только к тем записям, которые им нужны в данный момент для непосредственной работы. Все остальные записи базы данных будут просто находиться в своих таблицах.
В некоторой степени так и есть, но лучше поддерживать порядок на сайте и удалять все, что не нужно.
С базой данных меньшего размера бэкап будет работать быстрее. Освободившееся ресурсы сервера лучше потратить на обслуживание трафика.
Настройте автоматическую очистку и оптимизацию базы данных по расписанию. В зависимости от посещаемости и обновления контента выберите 1 раз в неделю или 1 раз в месяц.
Читайте также:
Надеюсь, статья была полезна. Оставляйте комментарии.
Сайт для тех, кто хочет использовать Вордпресс по максимуму, но не хочет разбираться в коде.
Здравствуйте! Спасибо за столь подробное объяснение.
Подскажите, пожалуйста, что имеется ввиду — «ваш-мета-ключ»?О чем идет речь?
И еще один вопрос. SQL запросы к базе данных и Оптимизация базы данных — это одно и тоже? Или нужно делать и то и то? Спасибо.
Здравствуйте,
Мета ключ — это идентификатор плагина.
SQL запрос — это команда, которую должна выполнить база данных.
Оптимизация БД — это процедура обслуживания БД, которая запускается с помощью SQL запроса.
Спасибо, очень толковая статья. По сути — руководство к действию.
Для неискушенных пользователей Вордпреса — просто находка, особенно в части ручной чистки базы данных.
Интересны и отобранные плагины. Буду пробовать «Advanced Database Cleaner».