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

Оптимизация базы данных WordPress — одна из важных задач для поддержания сайта в хорошем состоянии и повышения его производительности. Со временем база данных накапливает много мусора: ревизии записей, устаревшие транзиенты, автоматические черновики и даже переполненные таблицы, которые могут существенно замедлять работу сайта. В этой статье мы подробно разберём, как оптимизировать базу данных, удалять ненужные данные и освобождать место, используя плагины и собственные PHP-функции на примере WordPress.

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

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

  • Замедлению загрузки страниц.
  • Увеличению времени отклика сервера.
  • Росту размера резервных копий и увеличению затрат на хранение.
  • Проблемам с резервным копированием и восстановлением.

Регулярная оптимизация помогает поддерживать базу данных в чистоте и позволяет избежать подобных проблем.

Основные источники «мусора» в базе данных WordPress

Давайте разберём, какие именно данные можно считать мусором и подлежат удалению:

  • Ревизии записей: WordPress по умолчанию сохраняет каждую версию записи, что с течением времени приводит к накоплению большого количества ревизий.
  • Автосохранения и черновики: Автоматические сохранения и устаревшие черновики, которые уже не нужны.
  • Устаревшие транзиенты: Кэшированные данные, срок действия которых истёк, но они не были удалены.
  • Комментарии в спаме и корзине: Мусорные комментарии, которые можно удалить.
  • Переполненные таблицы: Иногда плагины создают собственные таблицы, которые могут разрастаться и нуждаться в очистке.

Плагины для автоматической оптимизации базы данных

Для удобства и безопасности часто используют плагины, которые помогают очистить базу данных без рисков ручного вмешательства. Рассмотрим два популярных решения:

WP-Optimize

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

  • Интерфейс интуитивно понятный.
  • Поддержка планирования автоматической очистки.
  • Возможность оптимизации изображений и кеширования.

Чтобы использовать, нужно установить плагин через репозиторий WordPress, активировать и перейти в раздел «WP-Optimize» в админке.

Advanced Database Cleaner

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

  • Удаление старых ревизий, черновиков, спам-комментариев.
  • Очистка таблиц, созданных плагинами.
  • Планировщик заданий для регулярной очистки.

Ручная оптимизация базы данных с помощью кода

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

Удаление старых ревизий записей

Следующая функция удалит все ревизии, кроме последних 3 для каждой записи:

function wpcheck_delete_old_revisions() {
    global $wpdb;
    $query = "DELETE FROM {$wpdb->posts} WHERE post_type = 'revision' AND ID NOT IN (
        SELECT ID FROM (
            SELECT ID FROM {$wpdb->posts} WHERE post_type = 'revision' ORDER BY post_date DESC LIMIT 3
        ) AS t
    )";
    $wpdb->query($query);
}

Вы можете запускать эту функцию через WP-CLI или в хуках по расписанию.

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

Транзиенты — временные данные, которые могут оставаться в базе, если не очищаются автоматически. Очистим все просроченные транзиенты:

function wpcheck_delete_expired_transients() {
    global $wpdb;
    $time = time();
    $query = "DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_timeout_%' AND option_value < %d";
    $wpdb->query($wpdb->prepare($query, $time));

    $query2 = "DELETE o FROM {$wpdb->options} o LEFT JOIN {$wpdb->options} o2 ON o.option_name = CONCAT('_transient_', SUBSTRING(o2.option_name, 18)) WHERE o2.option_name IS NULL AND o.option_name LIKE '_transient_%'";
    $wpdb->query($query2);
}

Функция удалит просроченные таймауты и соответствующие данные транзиентов.

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

Для оптимизации всех таблиц базы данных используйте MySQL-команду через WPDB:

function wpcheck_optimize_tables() {
    global $wpdb;
    $tables = $wpdb->get_col('SHOW TABLES');
    foreach ($tables as $table) {
        $wpdb->query("OPTIMIZE TABLE {$table}");
    }
}

Эту функцию удобно запускать после удаления мусора для освобождения места и дефрагментации таблиц.

Удаление данных из переполненных таблиц плагинов

Некоторые плагины создают свои таблицы, которые могут разрастаться и влиять на производительность. Например, плагин статистики или кеширования.

Чтобы узнать, какие таблицы занимают много места, можно использовать SQL-запрос:

SELECT table_name AS "Таблица", 
    ROUND(data_length / 1024 / 1024, 2) AS "Размер (MB)"
FROM information_schema.tables
WHERE table_schema = DATABASE()
ORDER BY data_length DESC;

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

Пример очистки таблицы плагина с условием удаления записей старше 90 дней:

function wpcheck_clean_plugin_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'plugin_data'; // замените на вашу таблицу
    $date_limit = date('Y-m-d H:i:s', strtotime('-90 days'));
    $query = $wpdb->prepare("DELETE FROM {$table_name} WHERE created_at < %s", $date_limit);
    $wpdb->query($query);
}

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

Рекомендации по регулярному обслуживанию базы данных

Чтобы база данных не разрасталась и сайт работал быстро:

  • Настройте регулярное удаление ревизий, например, ограничив их число через WP_POST_REVISIONS в wp-config.php.
  • Используйте плагины для автоматической очистки базы данных.
  • Проводите периодическую оптимизацию таблиц.
  • Мониторьте размер таблиц, особенно созданных сторонними плагинами.
  • Создавайте резервные копии перед оптимизацией.

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Оптимизация базы данных WordPress: удаление переполненных таблиц и мусора
23.11.2025
Как защитить WordPress от ботов и спама в 2024 году
22.02.2026
Как удалить неиспользуемые метаданные в WooCommerce для ускорения сайта
03.05.2026
Как отключить autoload для плагинов в WordPress и улучшить производительность
01.03.2026
Как использовать WPCheck для отладки конфликтов между плагинами WordPress
27.01.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее