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

Почему база данных замедляет WordPress

С каждым обновлением контента в WordPress в базе появляются новые записи – ревизии, автосохранения, спам‑комментарии, «мусорные» опции. Со временем таблицы wp_posts, wp_postmeta и особенно wp_options могут вырасти в несколько раз, что приводит к росту времени выполнения запросов и падению скорости сайта.

Оптимизация базы данных позволяет сократить объём хранимых данных, ускорить SELECT‑запросы и, как следствие, улучшить показатель Core Web Vitals.

Подготовка: резервное копирование

Прежде чем вносить любые изменения, сделайте полную резервную копию базы. Это можно сделать через phpMyAdmin, плагин Безопасность WordPress: полный чек‑лист или с помощью WP‑CLI:

wp db export backup-$(date +%F).sql

В случае ошибки вы сможете быстро восстановить прежнее состояние.

Оптимизация таблиц MySQL

MySQL предоставляет команду OPTIMIZE TABLE, которая реорганизует данные и освобождает неиспользуемое пространство.

Оптимизация всех таблиц за один запрос

global $wpdb;
$tables = $wpdb->get_col('SHOW TABLES LIKE "{$wpdb->prefix}%"');
foreach ( $tables as $table ) {
    $wpdb->query("OPTIMIZE TABLE `$table`");
}

Эта процедура особенно полезна после массового удаления записей.

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

Каждое сохранение поста создает ревизию. По умолчанию WordPress хранит их бесконечно, что быстро «засоряет» wp_posts.

SQL‑запрос для удаления всех ревизий

DELETE a FROM wp_posts a
JOIN wp_posts b ON a.post_parent = b.ID
WHERE b.post_type = 'revision';

Если хотите оставить последние 3 ревизии, используйте более сложный запрос или плагин.

Отключение создания ревизий

add_filter( 'wp_revisions_to_keep', function(){ return 0; } );

Добавьте этот код в functions.php – новые ревизии создаваться не будут.

Очистка wp_options и транзиентов

Таблица wp_options часто содержит «мусор» – устаревшие автозагрузки, просроченные транзиенты и данные от удалённых плагинов.

Удаляем просроченные транзиенты

global $wpdb;
$time = current_time('timestamp');
$wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s AND option_value esc_like('_transient_timeout_') . '%', $time ) );

Эта команда безопасна и не затрагивает активные транзиенты.

Удаляем «мертвые» автозагрузки

$orphaned = $wpdb->get_col("SELECT option_name FROM {$wpdb->options} WHERE autoload='yes' AND option_name NOT IN (SELECT meta_key FROM {$wpdb->postmeta})");
foreach ( $orphaned as $name ) {
    delete_option( $name );
}

Проверьте список перед удалением, чтобы не потерять важные настройки.

Автоматизация с плагинами‑оптимизаторами

Если вы предпочитаете GUI, существуют проверенные решения. Например, плагин Топ‑15 лучших плагинов кэширования WordPress в 2026 часто включает модуль очистки базы. Другие популярные решения:

  • WP‑Optimize – удаляет ревизии, спам‑комментарии и «мусорные» опции, а также позволяет планировать оптимизацию.
  • Advanced Database Cleaner – предоставляет детальный список «мусорных» таблиц и возможность их безопасного удаления.
  • WP‑CLI (см. WP‑CLI для начинающих) – одна команда wp db clean (при наличии соответствующего пакета) удалит всё лишнее за секунды.

Выбирайте решение, которое подходит под ваш уровень доступа и объём сайта.

Проверяем результат: измеряем производительность

После очистки запустите тесты:

  • Google PageSpeed Insights – сравните First Contentful Paint до и после.
  • Плагин Rank Math SEO PRO показывает время генерации страниц в разделе «Performance».
  • WP‑CLI wp db size покажет уменьшение размера базы.

Если размер таблиц сократился более чем на 20 % и скорость загрузки улучшилась, значит оптимизация прошла успешно.

Регулярный план обслуживания

Оптимизация базы – это не разовая операция. Рекомендуем:

  1. Раз в неделю запускать автоматическую очистку (через планировщик WP‑Cron или серверный cron).
  2. Раз в месяц проверять wp_options на наличие «мусорных» записей.
  3. Перед крупными обновлениями делать полную резервную копию.

Соблюдая эти простые правила, вы поддержите быстрый отклик сайта и избежите проблем с «заполненной» базой.

❓ Часто задаваемые вопросы

Можно ли удалить все ревизии без риска потерять данные?

Да, ревизии хранят только историю изменений. После удаления вы сохраняете текущую версию поста, а старые версии становятся недоступными.

Как проверить, какие опции в wp_options занимают больше всего места?

В phpMyAdmin выполните запрос SELECT option_name, LENGTH(option_value) AS size FROM wp_options ORDER BY size DESC LIMIT 10; – он покажет десять самых «тяжёлых» записей.

Влияет ли оптимизация таблиц на работу плагинов кэширования?

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

Нужен ли мне плагин‑оптимизатор, если я использую WP‑CLI?

WP‑CLI покрывает большинство задач (удаление ревизий, оптимизация таблиц). Плагин может быть удобен для тех, кто предпочитает графический интерфейс и автоматическое планирование.