Если ваш сайт на WordPress начал работать медленнее или база данных стала занимать много места, значит пришло время оптимизировать базу данных. В этой статье мы подробно рассмотрим, как проводить оптимизацию базы данных WordPress, какие плагины использовать и как написать простой кастомный код для удаления мусорных данных.
Почему оптимизация базы данных WordPress важна для производительности сайта
База данных — это сердце вашего сайта на WordPress, в ней хранятся все записи, страницы, комментарии, настройки и многое другое. Со временем в базе данных накапливается много «мусора»: ревизии постов, спам комментарии, устаревшие транзиенты и прочие временные данные. Это замедляет запросы к базе, увеличивает нагрузку на сервер и негативно влияет на скорость загрузки страниц.
Регулярная оптимизация базы данных помогает:
- Сократить размер базы данных;
- Ускорить выполнение запросов;
- Уменьшить нагрузку на сервер;
- Снизить вероятность ошибок и сбоев.
В следующих разделах мы рассмотрим, как можно быстро и эффективно очистить и оптимизировать базу данных WordPress.
Основные методы оптимизации базы данных WordPress
Удаление ревизий записей и автосохранений
WordPress автоматически сохраняет каждую версию записи при редактировании — это удобно, но со временем количество ревизий может вырасти до сотен тысяч, занимая много места. Для эффективного управления ревизиями можно ограничить их число или полностью удалить старые.
Для ограничения ревизий добавьте в wp-config.php следующий код:
define('WP_POST_REVISIONS', 5); // Хранить не более 5 ревизийДля удаления всех существующих ревизий можно использовать следующий SQL-запрос:
DELETE FROM wp_posts WHERE post_type = 'revision';Если вы хотите автоматизировать этот процесс средствами PHP, можно написать функцию, которую вызовете через WP-CLI или в рамках плагина:
function wpvip_delete_post_revisions() {
global $wpdb;
$wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
}
// Вызов функции
wpvip_delete_post_revisions();Очистка таблицы комментариев от спама и мусора
Комментарии со статусом «спам» и «удалённые» занимают место и требуют оптимизации. WordPress предоставляет удобные методы очистки, а также плагины, которые помогут автоматизировать процесс.
Для ручного удаления спама можно использовать SQL:
DELETE FROM wp_comments WHERE comment_approved = 'spam';
DELETE FROM wp_comments WHERE comment_approved = 'trash';Или с помощью кода PHP:
function wpvip_clear_spam_comments() {
global $wpdb;
$wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'spam'");
$wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_approved = 'trash'");
}
wpvip_clear_spam_comments();Удаление устаревших транзиентов
Транзиенты — это временные данные, которые плагинах и темах используются для кеширования. Иногда они не удаляются автоматически и накапливаются в базе, занимая место.
Для очистки транзиентов можно применить SQL-запрос:
DELETE FROM wp_options WHERE option_name LIKE '_transient_%';Или использовать следующий PHP-код для выборочного удаления только истёкших транзиентов:
function wpvip_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
));
foreach ($expired as $transient_timeout_name) {
$transient_name = str_replace('_transient_timeout_', '', $transient_timeout_name);
delete_transient($transient_name);
}
}
wpvip_delete_expired_transients();Лучшие плагины для оптимизации базы данных WordPress
WP-Optimize
Один из самых популярных и удобных плагинов для очистки и оптимизации базы данных. Позволяет удалять ревизии, спам, мусорные комментарии, устаревшие транзиенты и оптимизировать таблицы базы данных нажатием одной кнопки. Также предоставляет расписание автоматической очистки.
Advanced Database Cleaner
Этот плагин более детально подходит к очистке: показывает, сколько ревизий, транзиентов и мусорных данных накоплено, позволяет управлять удалением по типам, а также очищать неактивные записи плагинов и тем.
WP-Sweep
Простой и эффективный плагин, который удаляет ревизии, автосохранения, спам, мусор, неиспользуемые метаданные и многое другое. Использует правильные вызовы WordPress API для безопасного удаления.
Резервное копирование и безопасность при оптимизации базы данных
Перед любыми операциями по очистке и оптимизации базы данных крайне важно сделать полное резервное копирование. В случае ошибки или удаления нужных данных вы сможете быстро восстановить сайт.
Для резервного копирования можно использовать плагины, например, UpdraftPlus или Duplicator, или делать дамп базы данных вручную через phpMyAdmin или WP-CLI:
wp db export backup.sqlТолько после успешного создания бэкапа приступайте к очистке. Это поможет избежать потери данных и сбоев в работе сайта.
Автоматизация оптимизации базы данных с помощью WP-CLI
Если у вас есть доступ к серверу через SSH, WP-CLI — отличный инструмент для управления сайтом и базой данных. Для очистки ревизий и мусорных комментариев можно использовать стандартные команды:
wp post delete $(wp post list --post_type='revision' --format=ids) --force
wp comment delete $(wp comment list --status=spam,trash --format=ids) --forceДля более продвинутой очистки можно написать собственный WP-CLI скрипт, который будет выполнять комплексную оптимизацию по расписанию.
Заключение: регулярная оптимизация для стабильной работы сайта на WordPress
Оптимизация базы данных WordPress — несложная, но важная задача для поддержания скорости и стабильности вашего сайта. Используйте плагины для автоматизации, пишите кастомный код для специфичных задач, не забывайте про резервное копирование и мониторинг состояния базы данных.
Следуя описанным в статье рекомендациям, вы сможете значительно повысить производительность сайта и сделать работу с базой данных более эффективной.