Оптимизация базы данных – одна из ключевых задач для поддержания скорости и стабильности вашего сайта на WordPress. Особенно актуально это для сайтов с большим количеством публикаций и изменений, где база данных быстро разрастается из-за накопления ревизий, автосохранений, спама и других ненужных данных. В этой статье мы подробно рассмотрим, как удалить старые ревизии, почистить базу данных и повысить производительность сайта.
Что такое ревизии в WordPress и зачем их удалять
Ревизии – это автоматические или ручные сохранения изменений в записях и страницах. Они полезны, когда нужно откатиться к предыдущей версии контента. Однако с течением времени количество ревизий может достигать сотен и даже тысяч, значительно увеличивая размер таблиц базы данных и замедляя работу сайта.
Удаление старых ревизий поможет:
- Сократить объем базы данных;
- Уменьшить время выполнения запросов;
- Повысить общую производительность сайта.
Важно помнить, что полностью отключать ревизии не рекомендуется, лучше ограничить их количество и периодически чистить устаревшие.
Как удалить ревизии через phpMyAdmin
Самый простой способ очистить ревизии – выполнить SQL-запрос напрямую к базе данных через phpMyAdmin или другой инструмент для работы с MySQL.
Пример запроса для удаления всех ревизий:
DELETE FROM wp_posts WHERE post_type = 'revision';Перед выполнением обязательно сделайте резервную копию базы данных. Этот запрос удалит все ревизии без возможности восстановления. Если хотите удалить ревизии старше определенной даты, используйте:
DELETE FROM wp_posts WHERE post_type = 'revision' AND post_date < '2023-01-01 00:00:00';<После удаления ревизий рекомендуется выполнить оптимизацию таблиц:
OPTIMIZE TABLE wp_posts;Автоматизация удаления ревизий с помощью плагина WPNews CleanDB
Для удобства можно создать собственный плагин, который будет очищать базу от ревизий и другой мусорной информации по расписанию. Ниже пример минимального кода плагина с функцией удаления ревизий и запуском по крону:
<?php
/**
* Plugin Name: WPNews CleanDB
* Description: Удаляет старые ревизии и оптимизирует базу WordPress.
* Version: 1.0
* Author: WPNews
*/
function wpnews_deleted_old_revisions() {
global $wpdb;
$table = $wpdb->prefix . 'posts';
$date_limit = date('Y-m-d H:i:s', strtotime('-30 days'));
$deleted = $wpdb->query(
$wpdb->prepare(
"DELETE FROM $table WHERE post_type = 'revision' AND post_date < %s",
$date_limit
)
);
if($deleted !== false){
$wpdb->query("OPTIMIZE TABLE $table");
}
}
// Запускаем функцию один раз в сутки
if (!wp_next_scheduled('wpnews_daily_cleanup')) {
wp_schedule_event(time(), 'daily', 'wpnews_daily_cleanup');
}
add_action('wpnews_daily_cleanup', 'wpnews_deleted_old_revisions');
// Очистка при деактивации плагина
function wpnews_cleandb_deactivate() {
wp_clear_scheduled_hook('wpnews_daily_cleanup');
}
register_deactivation_hook(__FILE__, 'wpnews_cleandb_deactivate');
?>Этот плагин удаляет ревизии старше 30 дней и оптимизирует таблицу posts. Такой подход минимизирует влияние на работу сайта и автоматизирует процесс очистки.
Другие методы оптимизации базы данных WordPress
Удаление спама и мусорных комментариев
Комментарии со статусом spam и trash занимают место и замедляют запросы. Их можно удалить запросом:
DELETE FROM wp_comments WHERE comment_approved = 'spam';
DELETE FROM wp_comments WHERE comment_approved = 'trash';Или через плагин WPNews CleanDB добавить соответствующую функцию:
function wpnews_clean_comments() {
global $wpdb;
$wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'spam'");
$wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'trash'");
}Удаление устаревших автосохранений
Автосохранения сохраняются как отдельные записи типа 'revision', но могут быть и отдельными записями с типом 'autosave'. Их тоже можно удалить для очистки базы.
Оптимизация таблиц базы данных
После удаления большого объема данных рекомендуется выполнять оптимизацию таблиц командой SQL OPTIMIZE TABLE для освобождения пространства и улучшения производительности.
Рекомендации по регулярной оптимизации и безопасности базы данных
Регулярное проведение очистки и оптимизации позволит избежать замедления сайта, особенно если у вас активный блог с большим количеством изменений. Рекомендуется:
- Ограничить количество ревизий, добавив в
wp-config.phpстрокуdefine('WP_POST_REVISIONS', 5);– это сохранит максимум 5 ревизий на запись. - Регулярно делать резервное копирование базы перед очисткой.
- Использовать проверенные плагины или собственные скрипты для автоматизации процесса.
- Следить за размером таблиц и периодически выполнять их оптимизацию.
Также помните, что неправильные запросы могут привести к потере данных, поэтому всегда проверяйте команды на тестовом сервере.
Заключение
Удаление старых ревизий и других ненужных данных из базы WordPress – важный шаг для поддержания быстродействия и стабильности сайта. Используйте как ручные методы через SQL, так и автоматизацию через плагины, чтобы процесс был максимально удобным и безопасным. Следуя представленным рекомендациям, вы сможете существенно улучшить работу вашего WordPress-сайта без привлечения дополнительных ресурсов сервера.