База данных WordPress со временем может разрастаться за счет накопления различных логов, ревизий, транзакций и других данных, которые часто не нужны для работы сайта в повседневном режиме. Это приводит к замедлению запросов и увеличению размера бэкапов. В этой статье мы подробно разберем, как очистить базу данных от лишних данных, повысить производительность сайта и сохранить важную информацию.
Почему важно оптимизировать базу данных WordPress
WordPress использует MySQL или MariaDB для хранения контента, настроек и пользовательских данных. В процессе работы в таблицах накапливаются:
- Автосохранения и ревизии постов
- Транзиенты – временные кэшированные данные
- Логи плагинов и системные журналы
- Комментарии со спамом и удаленные
- История изменений и другие метаданные
Все эти данные существенно увеличивают размер базы и замедляют выполнение запросов. Регулярная оптимизация помогает ускорить сайт, уменьшить нагрузку на сервер и снизить время отклика.
Удаление ревизий и автосохранений WordPress
Ревизии сохраняются для каждого изменения поста, позволяя откатиться к предыдущей версии, но долгое хранение всех версий не всегда оправдано. Чтобы удалить все ревизии, можно использовать SQL-запрос:
DELETE FROM wp_posts WHERE post_type = 'revision';Также можно ограничить их создание, добавив в wp-config.php строку:
define('WP_POST_REVISIONS', 5); // хранить только 5 ревизийДля автоматизации очистки ревизий можно использовать плагин WP-Optimize или Advanced Database Cleaner, которые позволяют удалять ревизии, автосохранения и оптимизировать таблицы в один клик.
Удаление устаревших транзиентов
Транзиенты — это временные данные, которые обычно автоматически удаляются по истечении срока действия. Однако иногда они остаются в базе и занимают место.
Для очистки можно использовать следующий SQL-запрос:
DELETE FROM wp_options WHERE option_name LIKE '_transient_%' OR option_name LIKE '_site_transient_%';Или воспользоваться плагином Transients Manager, который показывает список всех транзиентов и позволяет удалять их вручную или автоматически.
Удаление спама и мусорных комментариев
Комментарии со статусом «спам» и «удалённые» также накапливаются и грузят базу данных.
Удалить их можно через админку WordPress на вкладке «Комментарии», либо с помощью SQL:
DELETE FROM wp_comments WHERE comment_approved = 'spam'; DELETE FROM wp_comments WHERE comment_approved = 'trash';Регулярная очистка комментариев улучшит производительность запросов, связанных с отображением записей и комментариев.
Оптимизация таблиц базы данных
MySQL таблицы со временем фрагментируются, что приводит к снижению скорости чтения и записи. Оптимизировать таблицы можно с помощью SQL-команды:
OPTIMIZE TABLE wp_posts, wp_comments, wp_options;Для всех таблиц можно написать скрипт, который переберёт все префиксы:
SHOW TABLES LIKE 'wp_%';И оптимизирует каждую таблицу. Плагины, такие как WP-DBManager и WP-Optimize, предлагают эту функцию в интерфейсе.
Пример кастомной функции для автоматической очистки базы данных
Для автоматизации очистки можно добавить в functions.php вашей темы следующий код, который будет удалять ревизии и устаревшие транзиенты по расписанию:
function wpclean_optimize_database() {
global $wpdb;
// Удаление ревизий
$wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
// Удаление устаревших транзиентов
$wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_%' OR option_name LIKE '_site_transient_%'");
}
if (!wp_next_scheduled('wpclean_daily_db_cleanup')) {
wp_schedule_event(time(), 'daily', 'wpclean_daily_db_cleanup');
}
add_action('wpclean_daily_db_cleanup', 'wpclean_optimize_database');Этот код создает ежедневное задание, которое будет очищать базу без вашего участия.
Рекомендации по регулярной оптимизации базы WordPress
Чтобы поддерживать базу данных в хорошем состоянии, придерживайтесь следующих практик:
- Ограничивайте количество ревизий, через
WP_POST_REVISIONS. - Регулярно очищайте транзиенты и комментарии.
- Оптимизируйте таблицы еженедельно или ежемесячно.
- Используйте проверенные плагины для автоматизации процессов.
- Делайте резервные копии перед изменениями базы.
Такая системная работа поможет избежать раздувания базы и обеспечит стабильную работу сайта.