Оптимизация базы данных WordPress — одна из ключевых задач для поддержания высокой производительности сайта, особенно при большом количестве публикаций и пользователей. За время работы сайта в базе данных накапливаются устаревшие записи, ревизии постов, спам-комментарии и другие данные, которые замедляют работу и увеличивают размер базы.
Почему важно удалять старые записи и ревизии в WordPress
При каждом сохранении записи WordPress создаёт новую ревизию, чтобы вы могли откатиться к предыдущим вариантам. При активном ведении блога или интернет-магазина количество ревизий может быстро превысить сотни и тысячи, что ведёт к раздутой базе данных.
Кроме ревизий, в базе накапливаются:
- Спам-комментарии и мусор
- Транзиенты, срок действия которых истёк
- Отчёты о действиях плагинов и журнал ошибок, которые не всегда нужны
Удаление этих данных ускоряет запросы к базе, снижает нагрузку и повышает отзывчивость сайта.
Как вручную удалить ревизии и старые записи через SQL-запросы
Если у вас есть доступ к phpMyAdmin или другому клиенту для работы с базой данных, можно использовать SQL-запросы для очистки.
Удаление ревизий
Ревизии хранятся в таблице wp_posts с типом revision. Для удаления всех ревизий выполните запрос:
DELETE FROM wp_posts WHERE post_type = 'revision';
Этот запрос удалит все ревизии, освободив место и ускорив базу. Но будьте аккуратны, если вы хотите сохранить некоторые из них — стоит сделать резервную копию базы.
Удаление спам-комментариев и мусора
Для удаления спам-комментариев:
DELETE FROM wp_comments WHERE comment_approved = 'spam';
Также можно очистить комментарии в корзине:
DELETE FROM wp_comments WHERE comment_approved = 'trash';
Удаление устаревших транзиентов
Транзиенты — временные опции, которые хранятся в таблице wp_options с префиксом _transient_. Чтобы удалить все просроченные транзиенты, используйте:
DELETE FROM wp_options WHERE option_name LIKE '_transient_%' AND option_name NOT LIKE '_transient_timeout_%';
DELETE FROM wp_options WHERE option_name LIKE '_transient_timeout_%' AND option_value < UNIX_TIMESTAMP();
Эти запросы очищают базу от временных данных, которые уже не нужны.
Автоматизация очистки базы с помощью плагина wp-ai-db-cleaner
Чтобы не выполнять очистку вручную, можно использовать плагин, который будет удалять старые ревизии и мусор автоматически. Ниже пример простого плагина с функциями для удаления ревизий и спама.
<?php
/**
* Plugin Name: WP-AI DB Cleaner
* Description: Автоматическая очистка базы данных WordPress от ревизий и спама.
* Version: 1.0
* Author: wp-ai.ru
*/
// Удаление ревизий
function wpai_delete_post_revisions() {
global $wpdb;
$wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
}
// Удаление спам-комментариев
function wpai_delete_spam_comments() {
global $wpdb;
$wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'spam'");
}
// Хук при активации плагина
function wpai_db_cleaner_activate() {
wpai_delete_post_revisions();
wpai_delete_spam_comments();
}
register_activation_hook(__FILE__, 'wpai_db_cleaner_activate');
// Регулярное очищение через CRON (раз в сутки)
if (!wp_next_scheduled('wpai_daily_db_cleanup')) {
wp_schedule_event(time(), 'daily', 'wpai_daily_db_cleanup');
}
add_action('wpai_daily_db_cleanup', 'wpai_db_cleanup');
function wpai_db_cleanup() {
wpai_delete_post_revisions();
wpai_delete_spam_comments();
}
?>
Такой плагин позволит вам держать базу в порядке без постоянного ручного вмешательства.
Оптимизация таблиц базы данных WordPress
Удаление мусора — это только часть работы. Для повышения производительности важно оптимизировать таблицы базы данных, устраняя фрагментацию и освобождая место.
В phpMyAdmin достаточно выбрать нужные таблицы и нажать «Оптимизировать таблицу». Но можно сделать это и программно.
Пример функции для оптимизации всех таблиц WordPress:
function wpai_optimize_db_tables() {
global $wpdb;
$tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
foreach ($tables as $table) {
$wpdb->query('OPTIMIZE TABLE ' . $table[0]);
}
}
Эту функцию можно добавить в плагин для запуска по расписанию или вручную.
Рекомендации и лучшие практики
Чтобы база данных не раздувалась и не снижала скорость сайта, придерживайтесь простых правил:
- Регулярно удаляйте старые ревизии, особенно если вы активно редактируете записи.
- Очищайте спам и удалённые комментарии.
- Автоматизируйте очистку с помощью плагинов или CRON-задач.
- Периодически оптимизируйте таблицы базы данных.
- Перед любыми операциями с базой делайте резервные копии.
Соблюдение этих рекомендаций существенно улучшит производительность вашего сайта и сделает работу с WordPress комфортнее.