Оптимизация базы данных WordPress без плагинов

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

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

Со временем в базе данных WordPress накапливаются неиспользуемые данные: ревизии постов, спам-комментарии, временные опции и прочее. Это замедляет работу сайта и увеличивает время отклика сервера. Оптимизация позволяет:

  • Уменьшить размер базы данных;
  • Сократить время выполнения запросов;
  • Повысить общую производительность сайта;
  • Снизить нагрузку на сервер.

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

Анализируем базу данных: с чего начать

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

SHOW TABLE STATUS LIKE 'wp_%';

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

Также можно проверить количество ревизий постов и их влияние на размер таблицы wp_posts:

SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';

Ревизии — частая причина раздувания базы данных.

Удаление ревизий постов вручную с помощью SQL-запросов

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

DELETE FROM wp_posts WHERE post_type = 'revision';

Важно: перед выполнением любых изменений сделайте резервную копию базы данных.

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

OPTIMIZE TABLE wp_posts;

Это освободит место и дефрагментирует таблицу.

Функция для удаления ревизий в WordPress — wptests_delete_revisions()

Для автоматизации можно добавить в файл functions.php тему или в отдельный плагин такую функцию:

function wptests_delete_revisions() {
    global $wpdb;
    $count = $wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
    $wpdb->query("OPTIMIZE TABLE {$wpdb->posts}");
    return $count;
}

Вызов wptests_delete_revisions() удалит все ревизии и оптимизирует таблицу.

Очистка таблиц комментариев: удаление спама и мусора

Другой источник «мусора» — неактуальные комментарии. Чтобы освободить место, удалите спам и мусорные комментарии:

DELETE FROM wp_comments WHERE comment_approved = 'spam';
DELETE FROM wp_comments WHERE comment_approved = 'trash';

После очистки оптимизируйте таблицу:

OPTIMIZE TABLE wp_comments;

PHP-функция для очистки комментариев — wptests_clean_comments()

function wptests_clean_comments() {
    global $wpdb;
    $spam_count = $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'spam'");
    $trash_count = $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'trash'");
    $wpdb->query("OPTIMIZE TABLE {$wpdb->comments}");
    return ['spam_deleted' => $spam_count, 'trash_deleted' => $trash_count];
}

Функция удалит спам и мусор, очистит таблицу и вернет количество удаленных строк.

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

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

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

DELETE FROM wp_options WHERE option_name LIKE '_transient_%' AND option_name NOT LIKE '_transient_timeout_%';

Однако важно аккуратно подходить к удалению, чтобы не затронуть нужные данные. Вот пример PHP-функции для удаления просроченных транзиентов:

function wptests_delete_expired_transients() {
    global $wpdb;
    $time = time();
    $expired = $wpdb->get_col($wpdb->prepare(
        "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE '_transient_timeout_%' AND option_value < %d",
        $time
    ));
    if ($expired) {
        foreach ($expired as $option) {
            $key = str_replace('_transient_timeout_', '', $option);
            $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->options} WHERE option_name = %s OR option_name = %s", $key, $option));
        }
    }
    return count($expired);
}

Функция находит просроченные транзиенты и удаляет их.

Оптимизация таблиц базы данных MySQL вручную

После удаления ненужных данных полезно оптимизировать все таблицы базы данных. Для этого можно выполнить SQL-команду:

OPTIMIZE TABLE wp_posts, wp_comments, wp_options;

Для автоматизации оптимизации всех таблиц используйте PHP-функцию:

function wptests_optimize_all_tables() {
    global $wpdb;
    $tables = $wpdb->get_results("SHOW TABLES LIKE '{$wpdb->prefix}%'");
    foreach ($tables as $table) {
        $table_name = array_values(get_object_vars($table))[0];
        $wpdb->query("OPTIMIZE TABLE {$table_name}");
    }
    return true;
}

Эта функция перебирает все таблицы с префиксом WordPress и оптимизирует их.

Резервное копирование базы данных перед оптимизацией

Перед любыми изменениями обязательно создайте резервную копию базы данных. Для этого можно использовать утилиты хостинга, phpMyAdmin или команду mysqldump в консоли:

mysqldump -u username -p database_name > backup.sql

Также можно написать простую PHP-функцию для экспорта таблиц (но для больших баз лучше использовать специализированные инструменты).

Заключение: регулярность и автоматизация

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

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

WooCommerce: автоматическое изменение стоимости товара при смене вариации
01.06.2026
Как добавить дополнительные поля в формы регистрации WordPress
13.12.2025
WooCommerce: правильное отключение и удаление плагинов без рисков
27.05.2026
WooCommerce: автоматическое изменение стоимости товара при смене вариаций
18.07.2026
WooCommerce: автоматическое отслеживание и изменение стоимости товаров при сменах вариаций
01.06.2026