Оптимизация базы данных WordPress: удаляем избыточные данные и ускоряем сайт

Почему важна оптимизация базы данных WordPress

База данных WordPress со временем накапливает много избыточных и временных данных: ревизии постов, спам-комментарии, автоматические черновики, транзиенты и прочее. Всё это не только занимает место на сервере, но и замедляет работу сайта, увеличивает время отклика и нагрузку на базу. Особенно это заметно на хостингах с ограниченными ресурсами.

Регулярная оптимизация базы данных помогает поддерживать сайт в отличном состоянии: ускоряет загрузку страниц, уменьшает размер дампа для бэкапа и облегчает работу с данными. В этой статье я покажу, как эффективно удалить ненужные данные и оптимизировать таблицы с помощью популярных плагинов и собственных функций.

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

Удаление ревизий и автосохранений для очистки базы данных

WordPress автоматически создаёт ревизии постов при их редактировании. Это удобно для восстановления информации, но при большом количестве записей ревизии быстро накапливаются и занимают много места.

Для удаления ревизий можно использовать плагин WP-Optimize, который позволяет удалять ревизии, а также очищать автосохранения и нежелательные данные в пару кликов.

Если хочется сделать это вручную с помощью кода, можно добавить в файл functions.php темы следующий сниппет:

function wptask_delete_post_revisions() {
    global $wpdb;
    $wpdb->query( "DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'" );
}
// Запускайте вручную через wp cli или временно подключайте вызов функции
// wptask_delete_post_revisions();

Такой код удалит все ревизии из базы. Однако делать это лучше после бэкапа. Можно расширить функционал, чтобы удалять ревизии старше определённого времени.

Удаление автосохранений и черновиков

Автосохранения и черновики тоже могут занимать место. Для их удаления можно использовать WP-CLI команды или написать похожий SQL-запрос:

DELETE FROM wp_posts WHERE post_status = 'auto-draft';
DELETE FROM wp_posts WHERE post_status = 'draft';

Однако черновики лучше не удалять массово, если вы активно работаете с контентом.

Очистка спама и мусорных комментариев

Спам-комментарии и помеченные как мусор записи негативно влияют на размер базы и нагрузку. Их также можно удалить через админку, но при большом объёме это неудобно.

Для массового удаления отлично подойдёт плагин WP-Sweep. Он позволяет очищать спам, мусорные комментарии, транзиенты и многое другое, эффективно оптимизируя базу без потерь нужных данных.

Пример кода для удаления спам-комментариев вручную:

function wptask_delete_spam_comments() {
    global $wpdb;
    $wpdb->query( "DELETE FROM {$wpdb->comments} WHERE comment_approved = 'spam'" );
}
// Аналогично вызывайте функцию по необходимости

Оптимизация таблиц базы данных MySQL

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

Плагины, такие как WP-Optimize и WP-Sweep, умеют автоматически оптимизировать таблицы. Но можно сделать это вручную через SQL-запрос:

OPTIMIZE TABLE wp_posts, wp_comments, wp_options, wp_postmeta, wp_commentmeta;

Или написать функцию для запуска оптимизации всех таблиц WordPress:

function wptask_optimize_all_tables() {
    global $wpdb;
    $tables = $wpdb->get_results( 'SHOW TABLES LIKE "' . $wpdb->prefix . '%"', ARRAY_N );
    foreach ( $tables as $table ) {
        $wpdb->query( "OPTIMIZE TABLE {$table[0]}" );
    }
}
// Вызовите функцию, когда нужно

Оптимизация таблиц восстанавливает производительность и экономит место на диске.

Удаление устаревших транзиентов и временных данных

Транзиенты — временные опции, которые используют многие плагины для кэширования. Иногда они не удаляются по окончании срока действия и засоряют базу.

Для очистки транзиентов рекомендуются следующие методы:

  • Плагин Transient Cleaner или WP-Sweep.
  • SQL-запрос удаления всех транзиентов:
DELETE FROM wp_options WHERE option_name LIKE '_transient_%';

Будьте осторожны с этим запросом, так как он удалит все транзиенты, включая активные. Лучше использовать плагин, который удалит только просроченные.

Резюме: комплексная оптимизация базы данных WordPress

Для поддержания базы данных WordPress в хорошем состоянии рекомендуется:

  • Регулярно удалять ревизии и автосохранения.
  • Очищать спам и мусорные комментарии.
  • Удалять устаревшие транзиенты.
  • Оптимизировать таблицы базы данных.
  • Использовать проверенные плагины, например, WP-Optimize и WP-Sweep для автоматизации.

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

Такой подход значительно повысит скорость загрузки сайта, снизит нагрузку на сервер и улучшит пользовательский опыт.

Как удалить ненужные мета данные WordPress для ускорения сайта
19.12.2025
WooCommerce: автоматическое отключение неиспользуемых платёжных систем
10.05.2026
Как изменить логин пользователя в WordPress без переустановки и регистрации
26.12.2025
WooCommerce: как автоматически удалять неоплаченные заказы через cron и код
26.05.2026
Как автоматизировать удаление старых медиа файлов в WordPress
12.03.2026