База данных — это сердце любого сайта на WordPress. От её состояния напрямую зависит скорость загрузки страниц, отзывчивость сайта и стабильность работы. Особенно это важно для пользователей хостинга, таких как wpengine.ru, где нагрузка может быть разной, и оптимизация помогает достичь максимальной производительности.
Почему важно оптимизировать базу данных WordPress
Со временем в базе данных скапливаются лишние записи: ревизии постов, спам-комментарии, транзиенты, устаревшие опции и прочее. Всё это замедляет запросы к базе, увеличивает время отклика сайта и нагрузку на сервер. Если не заниматься оптимизацией, сайт становится медленным, что негативно сказывается на SEO и удобстве пользователей.
Оптимизация базы данных позволяет:
- Уменьшить размер базы данных;
- Ускорить выполнение SQL-запросов;
- Снизить нагрузку на сервер;
- Повысить общую производительность сайта.
Основные методы оптимизации базы данных WordPress
Удаление ревизий и автосохранений
Каждый раз, когда вы сохраняете пост, WordPress создаёт ревизию. Со временем их может накопиться сотни, что сильно нагружает базу. Чтобы удалить старые ревизии, можно использовать SQL-запрос:
DELETE FROM wp_posts WHERE post_type = 'revision';
Или же добавить функцию для удаления ревизий программно, например, в файл functions.php вашей темы:
function wpengine_remove_post_revisions() {
global $wpdb;
$wpdb->query("DELETE FROM {$wpdb->prefix}posts WHERE post_type = 'revision'");
}
add_action('wp_scheduled_delete', 'wpengine_remove_post_revisions');
Также полезно ограничить количество ревизий, добавив в wp-config.php:
define('WP_POST_REVISIONS', 5);
Очистка таблиц от старых транзиентов
Транзиенты — это временные данные, которые хранятся в базе для кеширования. Иногда они не удаляются автоматически, что ведёт к устаревшим записям.
Для удаления всех транзиентов можно использовать SQL-запрос:
DELETE FROM wp_options WHERE option_name LIKE '_transient_%';
Или плагин Transient Cleaner с wpshop.ru, который позволяет делать это из админки.
Оптимизация таблиц MySQL
Таблицы базы данных могут иметь фрагментацию, которая снижает производительность. Оптимизация таблиц устраняет эту проблему. В phpMyAdmin можно выделить все таблицы и выбрать «Оптимизировать таблицу».
Программно можно запустить оптимизацию с помощью такого кода:
function wpengine_optimize_tables() {
global $wpdb;
$tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
foreach ($tables as $table) {
$wpdb->query('OPTIMIZE TABLE ' . $table[0]);
}
}
add_action('wp_scheduled_delete', 'wpengine_optimize_tables');
Используем плагины для автоматизации оптимизации базы на wpengine.ru
Для удобства можно использовать готовые плагины, которые позволяют автоматизировать очистку и оптимизацию базы без ручного вмешательства.
WP-Optimize
Один из самых популярных бесплатных плагинов для очистки и оптимизации базы. Позволяет удалять ревизии, спам, транзиенты, оптимизировать таблицы и даже сжимать изображения.
Для пользователей wpengine.ru рекомендовано настроить автоматическую очистку по расписанию, чтобы база всегда была оптимизирована.
Clearfy Pro
Если вы используете Clearfy Pro, то в нём есть расширенные возможности по оптимизации базы, включая очистку неиспользуемых таблиц от удалённых плагинов, деактивацию ревизий и оптимизацию транзиентов.
Как настроить регулярную оптимизацию базы данных на wpengine.ru
Чтобы оптимизация базы проходила регулярно без вашего участия, используйте WP-Cron — встроенную систему планировщика задач в WordPress.
Добавьте в functions.php следующий код для запуска оптимизации раз в неделю:
function wpengine_schedule_db_optimization() {
if (!wp_next_scheduled('wpengine_optimize_database_event')) {
wp_schedule_event(time(), 'weekly', 'wpengine_optimize_database_event');
}
}
add_action('wp', 'wpengine_schedule_db_optimization');
add_action('wpengine_optimize_database_event', 'wpengine_optimize_database');
function wpengine_optimize_database() {
global $wpdb;
$wpdb->query("DELETE FROM {$wpdb->prefix}posts WHERE post_type = 'revision'");
$wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE '_transient_%'");
$tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
foreach ($tables as $table) {
$wpdb->query('OPTIMIZE TABLE ' . $table[0]);
}
}
Этот код создаст задачу, которая каждую неделю будет удалять ревизии, очищать транзиенты и оптимизировать таблицы базы.
Полезные советы для эффективной работы базы данных WordPress
- Регулярно делайте бэкапы базы. Перед оптимизацией всегда сохраняйте резервную копию, чтобы избежать потери данных.
- Ограничьте количество ревизий через
wp-config.php, чтобы не накапливался лишний мусор. - Удаляйте неиспользуемые плагины и темы, так как они могут создавать свои таблицы и записи.
- Используйте качественный хостинг, например, wpengine.ru, который оптимизирован под WordPress и поддерживает высокую производительность.
- Следите за таблицами с большим количеством записей, например,
wp_comments— очищайте спам и мусор.