Перейти к содержимому
Оптимизация базы данных WordPress: как очистить и ускорить вашу базу данных

Оптимизация базы данных WordPress: как очистить и ускорить вашу базу данных

Erik KellerErik KellerОбновлено: 15 мин чтения597 просмотров

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

Что хранит WordPress в базе данных

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

Таблица Содержит Общий источник ненужных данных
wp_posts Посты, страницы, ревизии, вложения, пользовательские типы постов Ревизии постов, автосохранения
wp_postmeta Метаданные для постов (пользовательские поля, данные плагинов) Сиротские метаданные от удаленных постов
wp_options Настройки сайта, настройки плагинов, временные данные Устаревшие временные данные, старые настройки плагинов
wp_comments Комментарии и трекбэки Спам-комментарии, удаленные комментарии
wp_commentmeta Метаданные для комментариев Метаданные Akismet для удаленных комментариев
wp_usermeta Метаданные пользователей Токены сессий, данные пользователей плагинов
wp_termmeta Метаданные для категорий и тегов Сиротские метаданные терминов

Общие источники ненужных данных в базе данных

Ревизии постов

WordPress сохраняет ревизию каждый раз, когда вы нажимаете "Сохранить черновик" или "Обновить" на посте или странице. Пост, отредактированный 50 раз, имеет 50 ревизий, хранящихся в таблице wp_posts, каждая из которых имеет свой набор записей postmeta. На сайте с сотнями постов ревизии могут составлять тысячи ненужных строк в базе данных.

Временные данные

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

Сиротские данные

Когда вы удаляете пост, его метаданные (записи wp_postmeta) могут не быть удалены. Аналогично, удаление комментариев, пользователей или терминов может оставить после себя сиротские строки метаданных. Деактивированные и удаленные плагины часто оставляют свои таблицы базы данных, занимая место и загромождая вашу базу данных.

Спам и удаленный контент

Спам-комментарии, удаленные посты и удаленные комментарии остаются в базе данных до тех пор, пока не будут вручную очищены. Сайты с Akismet или другими фильтрами спама могут накапливать тысячи спам-комментариев, которые требуют периодической очистки.

Автосохранения

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

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

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

Удалить ревизии постов

-- Удалить все ревизии постов
DELETE FROM wp_posts WHERE post_type = 'revision';

-- Удалить сиротские postmeta (метаданные для удаленных постов)
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON pm.post_id = p.ID
WHERE p.ID IS NULL;

Очистка временных данных

-- Удалить истекшие временные данные
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_timeout_%'
AND option_value < UNIX_TIMESTAMP();

-- Удалить данные временных данных для истекших временных данных
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_%'
AND option_name NOT LIKE '%_transient_timeout_%';

Удаление спама и удаленных комментариев

-- Удалить спам-комментарии
DELETE FROM wp_comments WHERE comment_approved = 'spam';

-- Удалить удаленные комментарии
DELETE FROM wp_comments WHERE comment_approved = 'trash';

-- Удалить метаданные комментариев-сирот
DELETE cm FROM wp_commentmeta cm
LEFT JOIN wp_comments c ON cm.comment_id = c.comment_ID
WHERE c.comment_ID IS NULL;

Очистка базы данных на основе плагинов

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

WP-Optimize

WP-Optimize — это бесплатный плагин, который очищает ревизии, черновики, спам, временные данные и сиротские данные. Он также оптимизирует таблицы базы данных и поддерживает запланированные очистки. Профессиональная версия добавляет поддержку мультисайтов и расширенное планирование.

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

WP Rocket включает вкладку База данных, которая обрабатывает ревизии, автосохраненные черновики, удаленные записи, спам-комментарии, временные данные и оптимизацию таблиц. Поскольку WP Rocket в первую очередь является плагином кэширования, вы получаете очистку базы данных вместе с оптимизацией производительности в одном инструменте.

Advanced Database Cleaner

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

Плагин Бесплатная версия Запланированная очистка Обнаружение таблиц
WP-Optimize Да Да Базовое
WP Rocket Нет (только Premium) Да Нет
Advanced Database Cleaner Да Только Pro Да (подробно)

Оптимизации wp-config.php

Предотвратите раздувание базы данных на источнике, добавив эти константы в ваш файл wp-config.php:

Ограничить ревизии постов

// Хранить только 5 ревизий на пост (рекомендуется)
define( 'WP_POST_REVISIONS', 5 );

// Полностью отключить ревизии (не рекомендуется для большинства сайтов)
define( 'WP_POST_REVISIONS', false );

Установка ревизий на 5 предоставляет достаточно истории для восстановления после ошибок, предотвращая неограниченный рост ревизий. Для контентных сайтов с частыми правками 10 ревизий является разумной альтернативой.

Авто-очистка корзины

// Очищать корзину каждые 7 дней (по умолчанию 30)
define( 'EMPTY_TRASH_DAYS', 7 );

// Отключить корзину (элементы удаляются немедленно - используйте с осторожностью)
define( 'EMPTY_TRASH_DAYS', 0 );

Интервал автосохранения

// Увеличить интервал автосохранения до 5 минут (по умолчанию 60 секунд)
define( 'AUTOSAVE_INTERVAL', 300 );

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

После удаления строк выполните операцию OPTIMIZE для восстановления фрагментированного пространства:

OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options, wp_comments, wp_commentmeta;

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

Планирование Автоматической Очистки

Настройте автоматические расписания: еженедельная очистка временных файлов и спама, ежемесячное удаление ревизий и оптимизация таблиц, а также квартальные аудиты таблиц плагинов-сирот. WP-Optimize и WP Rocket оба поддерживают запланированную очистку. Настраивайте их в часы низкой нагрузки.

Мониторинг Размеров Базы Данных

Отслеживайте размер вашей базы данных, чтобы рано выявить избыточность. Выполните этот запрос, чтобы увидеть размеры отдельных таблиц:

SELECT table_name AS 'Таблица',
       ROUND(data_length / 1024 / 1024, 2) AS 'Данные (МБ)',
       table_rows AS 'Строки'
FROM information_schema.tables
WHERE table_schema = 'your_database_name'
ORDER BY (data_length + index_length) DESC
LIMIT 20;

Если wp_options превышает 5 МБ или wp_postmeta растет более 100 МБ, пришло время для очистки. Эти таблицы запрашиваются часто, поэтому их размер напрямую влияет на время загрузки страниц.

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

Для получе��ия дополнительной информации обратитесь к официальной документации: API базы данных WordPress.

Часто Задаваемые Вопросы

Безопасно ли удалять ревизии постов из базы данных?

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

Улучшит ли оптимизация базы данных заметно скорость моего сайта?

Улучшение зависит от того, насколько избыточна ваша база данных. Сайты с более чем 50,000 сиротских строк или таблицей wp_options, превышающей 10 МБ, увидят заметные улучшения в времени загрузки страниц и отзывчивости административной панели. Меньшие сайты могут увидеть незначительные улучшения. Оптимизация базы данных работает вместе с кэшированием и другими мерами производительности для накопительного улучшения.

Как часто мне следует оптимизировать базу данных WordPress?

Для активных сайтов с регулярными обновлениями контента ежемесячная оптимизация является хорошей базовой практикой. Сайты с высоким трафиком, частыми комментариями, транзакциями WooCommerce или отправками форм могут извлечь выгоду из еженедельной очистки временных файлов и спама с ежемесячной оптимизацией таблиц.

Могут ли плагины для очистки базы данных сломать мой сайт?

Репутационные плагины, такие как WP-Optimize и WP Rocket, разработаны с учетом безопасности. Они нацелены на известные категории избыточности (ревизии, временные файлы, спам) и не затрагивают важные данные. Риск увеличивается при ручном удалении таблиц, специфичных для плагинов. Если вы не уверены, нужна ли таблица, оставьте ее на месте и сначала исследуйте ее назначение.

В чем разница между OPTIMIZE TABLE и удалением строк?

Удаление строк удаляет данные из таблицы. OPTIMIZE TABLE реорганизует физическое хранение таблицы после удаления строк, восстанавливая дисковое пространство и дефрагментируя файл данных. Рассматривайте это как удаление файлов (удаление строк) по сравнению с дефрагментацией вашего жесткого диска (оптимизация таблицы).

Должен ли я использовать InnoDB или MyISAM для таблиц WordPress?

WordPress по умолчанию использует InnoDB с версии 5.5, и это рекомендуемый движок хранения. InnoDB поддерживает блокировку на уровне строк (лучше для одновременных пользователей), транзакции и восстановление после сбоев. MyISAM быстрее для операций, ориентированных на чтение, но лишен этих надежных функций. Если вы найдете таблицы MyISAM в вашей базе данных, рекомендуется конвертировать их в InnoDB.

Как мне определить таблицы, оставшиеся от деактивированных плагинов?

Плагин Advanced Database Cleaner может обнаружить и классифицировать некорневые таблицы. В качестве альтернативы выполните SQL-запрос SHOW TABLES и сравните имена таблиц с таблицами ядра WordPress и вашими активными плагинами. Таблицы с префиксами, соответствующими деактивированным плагинам, являются кандидатами на удаление.

Добавляет ли WooCommerce значительную избыточность базы данных?

Да. WooCommerce хранит данные заказов, метаданные продуктов, сессии клиентов и временные файлы, которые значительно увеличиваются на активных магазинах. Используйте WooCommerce > Статус > Инструменты, чтобы регулярно очищать истекшие временные файлы и сессии.

Оптимизируйте Производительность со Всех Сторон

WP Rocket обрабатывает кэширование, очистку базы данных и оптимизацию производительности в одном плагине, чтобы ваш сайт работал гладко.

Изучите WP Rocket →

Часто задаваемые вопросы

Как часто мне следует оптимизировать базу данных WordPress?
Для большинства сайтов достаточно ежемесячной оптимизации. Сайты с высоким трафиком, имеющие активные магазины WooCommerce или форумы, должны оптимизировать базу данных еженедельно. Автоматизированные инструменты, такие как WP-Optimize, могут выполнять эту задачу по расписанию.
Безопасно ли удалять ревизии постов из базы данных?
Да, удаление старых ревизий постов безопасно и обычно рекомендуется. WordPress по умолчанию хранит неограниченное количество ревизий, что может привести к добавлению тысяч строк. Вы можете ограничить количество ревизий, добавив константу define REVISIONS в wp-config.php.
Улучшит ли оптимизация базы данных скорость моего сайта?
Оптимизация базы данных обычно сокращает время выполнения запросов, что улучшает время отклика сервера (TTFB). Влияние наиболее заметно на динамических страницах с сложными запросами, таких как страницы продуктов WooCommerce или результаты поиска.
Следует ли оптимизировать базу данных до или после резервного копирования?
Всегда создавайте полную резервную копию базы данных перед выполнением любой оптимизации. Это гарантирует, что вы сможете восстановить данные, если что-то пойдет не так в процессе очистки.
Что такое «сиротские» метаданные и могу ли я их безопасно удалить?
Сиротские метаданные — это строки в мета-таблицах, которые ссылаются на посты, пользователей или комментарии, которые больше не существуют. Их безопасно удалять, и они часто накапливаются из-за удаленных плагинов или контента. Инструменты, такие как WP-Optimize, могут выявлять и очищать эти записи.

Поделиться публикацией

Об Авторе

Erik Keller
Erik Keller

Эксперт по WordPress

Старший специалист по WordPress с обширным опытом разработки тем, плагинов и WooCommerce. Увлечён помощью бизнесу в достижении успеха с помощью решений WordPress.

WordPressWooCommerceРазработка темРазработка плагиновОптимизация производительности

Будьте в Курсе

Получайте последние советы и уроки по WordPress на свою почту.