Оптимизация базы данных 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 % и скорость загрузки улучшилась, значит оптимизация прошла успешно.
Регулярный план обслуживания
Оптимизация базы – это не разовая операция. Рекомендуем:
- Раз в неделю запускать автоматическую очистку (через планировщик WP‑Cron или серверный cron).
- Раз в месяц проверять
wp_optionsна наличие «мусорных» записей. - Перед крупными обновлениями делать полную резервную копию.
Соблюдая эти простые правила, вы поддержите быстрый отклик сайта и избежите проблем с «заполненной» базой.
❓ Часто задаваемые вопросы
Можно ли удалить все ревизии без риска потерять данные?
Да, ревизии хранят только историю изменений. После удаления вы сохраняете текущую версию поста, а старые версии становятся недоступными.
Как проверить, какие опции в wp_options занимают больше всего места?
В phpMyAdmin выполните запрос SELECT option_name, LENGTH(option_value) AS size FROM wp_options ORDER BY size DESC LIMIT 10; – он покажет десять самых «тяжёлых» записей.
Влияет ли оптимизация таблиц на работу плагинов кэширования?
Оптимизация таблиц ускоряет запросы к базе, но не меняет работу кэша. После очистки рекомендуется сбросить кэш, чтобы он не хранил устаревшие данные.
Нужен ли мне плагин‑оптимизатор, если я использую WP‑CLI?
WP‑CLI покрывает большинство задач (удаление ревизий, оптимизация таблиц). Плагин может быть удобен для тех, кто предпочитает графический интерфейс и автоматическое планирование.