Ваша база данных WordPress медленно заполняется цифровым мусором. Каждый раз, когда вы сохраняете черновик, WordPress создаёт авто-черновик. Каждый раз, когда вы обновляете запись, WordPress сохраняет всю предыдущую версию как ревизию. Каждый спам-комментарий, пойманный Akismet, остаётся в базе данных навсегда. Осиротевшие метаданные — записи, ссылающиеся на посты или комментарии, которых больше не существует — накапливаются незаметно. После года-двух ведения блога ваша база данных может на 30-40% состоять из мёртвого груза. WP-Sweep — это метла, которая выметает этот мусор, и в отличие от многих конкурентов, делает это через собственные функции WordPress, а не сырые SQL-запросы.
Почему очистка базы данных имеет значение
Раздутая база данных не просто тратит дисковое пространство. Она замедляет каждый запрос. Когда WordPress выполняет запрос к таблице записей — для отображения индекса блога, генерации карты сайта, работы поиска — ему приходится сканировать тысячи авто-черновиков и ревизий, чтобы найти нужные опубликованные записи. Индекс помогает, но даже с правильной индексацией таблица с 50 000 строк, из которых 15 000 — мусор, будет работать медленнее, чем таблица с 35 000 чистых строк. Разница измерима: на сайте с 5 000 опубликованных записей и 20 000 ревизий очистка может сократить типичное время загрузки страницы на 15-25%.
Помимо производительности, есть вопрос бэкапов. Каждый байт ненужных данных в базе данных — это байт, который записывается в файлы резервных копий, передаётся в удалённое хранилище и хранится с избыточностью. На сайте с базой данных размером 200 МБ, где 80 МБ — ревизионный хлам, вы платите за 80 МБ резервного хранения и трафика для данных, которые не служат абсолютно никакой цели.
И есть ещё миграция. При переносе сайта на новый хостинг вы экспортируете базу данных. Лёгкая, чистая база экспортируется и импортируется быстрее, снижая риск тайм-аутов. Когда ваша база данных содержит 500 МБ ревизий и спама, миграция, которая должна была занять пять минут, может занять час — или вовсе провалиться, упёршись в лимиты тайм-аута процессов хостинга.
Что WP-Sweep чистит: полный список
Плагин организует операции очистки по логическим категориям. Каждая категория имеет своё действие, которое запускается независимо — кнопки «очистить всё» нет, и это сознательное решение: вы должны просмотреть, что собираетесь удалить, прежде чем подтвердить.
Очистка, связанная с записями
- Ревизии записей: каждое сохранённое изменение записи создаёт ревизию. WordPress по умолчанию хранит неограниченное количество. Запись, отредактированная 50 раз, порождает 50 полных копий в базе. WP-Sweep удаляет все ревизии через wp_delete_post_revision().
- Авто-черновики: WordPress автоматически сохраняет черновики по мере набора текста. Если вы начали запись и не опубликовали, авто-черновик остаётся в базе навсегда. Имеют статус auto-draft и удаляются через wp_delete_post().
- Удалённые записи: записи в корзине не удалены по-настоящему — они мягко удалены и могут быть восстановлены. WP-Sweep безвозвратно удаляет записи из корзины через wp_delete_post() с параметром принудительного удаления.
- Осиротевшие метаданные записей: при удалении записи связанные с ней метаданные тоже должны удаляться. На практике это происходит не всегда — данные плагинов, значения произвольных полей и SEO-метаданные могут пережить запись, к которой относились. WP-Sweep находит и удаляет их через delete_post_meta().
- Дубликаты метаданных записей: некоторые плагины имеют баг, при котором они сохраняют одну и ту же пару ключ-значение метаданных несколько раз для одной записи. WP-Sweep находит и удаляет дубликаты, оставляя только один экземпляр.
- Кэш метаданных записей: WordPress хранит внутренний кэш поисков метаданных записей. Со временем этот кэш накапливает устаревшие записи. WP-Sweep очищает его.
Очистка, связанная с комментариями
- Спам-комментарии: комментарии, помеченные как спам Akismet или вручную. Удаляются через wp_delete_comment() с принудительным удалением.
- Неодобренные комментарии: комментарии, застрявшие в очереди на модерацию. Если у вас есть ожидающие комментарии многолетней давности, которые вы никогда не одобрите, эта очистка убирает их.
- Комментарии в корзине: комментарии в корзине. Безвозвратно удаляются через wp_delete_comment().
- Осиротевшие метаданные комментариев: записи метаданных, ссылающиеся на несуществующие комментарии.
- Дубликаты метаданных комментариев: то же, что дубликаты метаданных записей, но для комментариев.
Очистка пользователей и терминов
- Осиротевшие метаданные пользователей: метаданные пользователей, удалённых из системы.
- Дубликаты метаданных пользователей: дубликаты записей пользовательских метаданных.
- Осиротевшие метаданные терминов: метаданные терминов таксономии, которых больше нет.
- Дубликаты метаданных терминов: дубликаты записей метаданных терминов.
- Осиротевшие связи терминов: связи между записями и терминами, где одна сторона больше не существует.
- Неиспользуемые термины: термины таксономии, не связанные ни с одной записью — по сути, пустые категории или метки.
Системная очистка
- Транзиентные опции: транзиенты WordPress — это временные кэшированные данные с временем истечения. Истёкшие транзиенты должны автоматически собираться WordPress, но на сайтах с низкой посещаемостью сборка мусора может не запускаться достаточно часто. WP-Sweep удаляет истёкшие транзиенты через delete_transient().
- Оптимизация таблиц базы данных: после удаления данных таблицы могут иметь фрагментацию — выделенное, но неиспользуемое пространство. WP-Sweep выполняет команду MySQL OPTIMIZE TABLE (через абстракцию $wpdb) для возврата этого пространства.
- Кэш oEmbed: при встраивании видео YouTube или твита WordPress кэширует код вставки. Старые записи кэша вставок могут накапливаться.
Почему использование нативных функций WordPress имеет значение
Самое важное архитектурное решение разработчиков WP-Sweep — использование функций ядра WordPress вместо прямых SQL-запросов. Это не мелкая деталь реализации: это разница между безопасной очисткой и потенциально разрушительной.
Конкретный пример. Когда вы удаляете запись функцией WordPress wp_delete_post(), WordPress выполняет цепочку действий: запускает хук before_delete_post, оповещает все плагины, зарегистрировавшие слушателей этого хука, удаляет метаданные записи, удаляет связи терминов, убирает связанные комментарии, запускает хук deleted_post и затем удаляет строку записи из базы. Каждый плагин, хранящий данные, связанные с записью, получает шанс убрать за собой.
Когда вы удаляете запись сырым SQL-запросом — DELETE FROM wp_posts WHERE ID = 123 — ничего этого не происходит. Строка записи исчезает, но метаданные, связи терминов и данные плагинов остаются как сироты. Хуки не срабатывают. Плагины, полагающиеся на эти хуки для поддержания целостности данных, не получают уведомлений. То, что начиналось как операция очистки, оставляет базу данных в худшем состоянии, чем до неё.
Это фундаментальное преимущество WP-Sweep перед плагинами WP-Optimize и Advanced Database Cleaner, которые оба используют прямые SQL-запросы хотя бы для части своих операций. Подход WP-Sweep медленнее — каждое удаление проходит через полный API WordPress — но он безопаснее и тщательнее.
Функции WordPress, используемые WP-Sweep
| Функция | Для чего | Что делает | Запускаемые хуки |
|---|---|---|---|
| wp_delete_post_revision() | Ревизии записей | Удаляет одну ревизию и её метаданные | delete_post, deleted_post |
| wp_delete_post() | Авто-черновики, корзина | Удаляет запись и все связанные данные | before_delete_post, delete_post, deleted_post, after_delete_post |
| wp_delete_comment() | Спам, неодобренные, корзина | Удаляет комментарий и его метаданные | delete_comment, deleted_comment |
| delete_post_meta() | Осиротевшие и дубликаты метаданных записей | Удаляет метаданные конкретной записи | delete_post_meta, deleted_post_meta |
| delete_comment_meta() | Осиротевшие и дубликаты метаданных комментариев | Удаляет метаданные конкретного комментария | delete_comment_meta, deleted_comment_meta |
| delete_user_meta() | Осиротевшие и дубликаты метаданных пользователей | Удаляет метаданные конкретного пользователя | delete_user_meta, deleted_user_meta |
| delete_term_meta() | Осиротевшие и дубликаты метаданных терминов | Удаляет метаданные конкретного термина | delete_term_meta, deleted_term_meta |
| wp_remove_object_terms() | Осиротевшие связи терминов | Удаляет ассоциации терминов с объектом | delete_term_relationships |
| wp_delete_term() | Неиспользуемые термины | Удаляет термин из таксономии | delete_term, deleted_term |
| delete_transient() | Истёкшие транзиенты | Удаляет транзиент из таблицы опций | delete_transient_{name}, deleted_transient |
Сравнение: WP-Sweep против WP-Optimize против Advanced Database Cleaner
| Функция | WP-Sweep | WP-Optimize | Advanced Database Cleaner |
|---|---|---|---|
| Метод удаления | Только нативные функции WP | Прямые SQL-запросы | Прямые SQL-запросы |
| Очистка ревизий | Да | Да | Да |
| Поиск осиротевших метаданных | Все типы | Только метаданные записей | Все типы |
| Удаление дубликатов метаданных | Да | Нет | Нет |
| Оптимизация таблиц | Да | Да | Да |
| Сжатие изображений | Нет | Да | Нет |
| Кэширование страниц | Нет | Да | Нет |
| Планирование очистки | Да | Да | Да (Pro) |
| Обзор таблиц базы данных | Нет | Да — детальный | Да — детальный |
| Очистка данных плагинов при удалении | Нет | Нет | Да — планировщик очистки |
| Цена | Бесплатно | Freemium (Pro от $49/год) | Freemium (Pro от $39/год) |
Когда что выбирать
Выбирайте WP-Sweep, когда ваша главная забота — целостность базы данных и вы хотите инструмент, который чистит досконально, используя собственный API WordPress. Подход с нативными функциями означает, что каждый плагин получает шанс отреагировать на удаления, и осиротевшие данные не остаются. WP-Sweep — лучший выбор для чисто базоданной очистки: он делает одно дело и делает его правильно. Если вам нужна только очистка базы данных и у вас уже есть решение для кэширования и оптимизации изображений, WP-Sweep — тот сфокусированный инструмент, который вам нужен.
Выбирайте WP-Optimize, если хотите универсальный набор для производительности. Помимо очистки базы, WP-Optimize включает сжатие изображений, кэширование страниц (аналогично WP Super Cache) и Gzip-сжатие. Pro-версия добавляет плановые очистки, поддержку мультисайтов и премиум-поддержку. Однако очистка базы данных использует прямые SQL-запросы, что означает: хуки плагинов не срабатывают, и могут остаться осиротевшие данные от плагинов, хранящих информацию вне стандартных таблиц WordPress.
Выбирайте Advanced Database Cleaner, если нужен гранулярный контроль над тем, что и когда чистится. Его выдающаяся функция — способность убирать остаточные данные, оставленные конкретными плагинами после их удаления. Также предоставляет детальный потабличный анализ, показывая, какие именно таблицы потребляют больше всего места. Pro-версия добавляет плановые очистки и возможность чистить отдельные таблицы базы данных, а не категории данных.
Влияние на производительность: до и после
Улучшение производительности от очистки базы данных полностью зависит от того, сколько мусора накопилось. На типичном сайте WordPress с 2-3 годами контента можно ожидать:
- Уменьшение таблицы записей: 20-60% в зависимости от частоты правок. Сайт, где каждая запись проходит через 10 ревизий, увидит сокращение на 60-70%. Сайт, где записи публикуются и не редактируются, увидит минимальное сокращение.
- Уменьшение таблицы комментариев: 10-50% в зависимости от объёма спама. Сайты с сильным спамом без адекватной фильтрации могут сократить таблицу комментариев на 80% и более.
- Уменьшение таблицы опций: 5-15%. Истёкшие транзиенты — главный виновник; на сайтах с множеством плагинов, активно использующих транзиенты (плагины кэширования, ленты соцсетей), таблица опций может значительно раздуться.
- Общее сокращение размера базы данных: обычно 20-40% на сайтах, которые никогда не чистились.
Для контекста: на одном из сайтов было 8 400 ревизий, 3 200 авто-черновиков, 12 000 спам-комментариев и 1 500 осиротевших записей метаданных. Размер базы составлял 340 МБ. После прогона WP-Sweep по всем категориям база сжалась до 198 МБ — сокращение на 42%. Время загрузки страниц индекса блога сократилось с 1,8 до 1,1 секунды — улучшение на 39% по замерам на уровне сервера.
Как часто запускать очистку
Идеальный график очистки зависит от вашей публикационной активности:
- Ежедневные публикации (новостные сайты, крупные блоги): запускайте WP-Sweep ежемесячно. Объём ревизий и авто-черновиков на быстро обновляемых сайтах накапливается быстро.
- Еженедельные публикации (типичные блоги): запускайте WP-Sweep раз в квартал. База растёт достаточно медленно, чтобы ежемесячные чистки давали убывающую отдачу.
- Ежемесячные публикации (сайты-портфолио, страницы компаний): запускайте WP-Sweep перед любым крупным обновлением или миграцией. База вряд ли значительно вырастет между чистками.
- Перед любой миграцией или крупным обновлением: независимо от графика, запускайте WP-Sweep перед экспортом базы для миграции или перед обновлением до новой мажорной версии WordPress. Чистая база мигрирует быстрее и с меньшей вероятностью вызовет проблемы.
Функции безопасности и лучшие практики
WP-Sweep включает несколько решений, ориентированных на безопасность:
- Показ количества перед действием: перед очисткой любой категории плагин показывает точное количество затронутых элементов. Вы видите «Ревизии: 14 237» и принимаете информированное решение.
- Индивидуальные действия очистки: вы чистите по одной категории за раз, а не всё сразу. Это позволяет проверять результаты каждой очистки перед продолжением.
- Без изменения конфигурации: WP-Sweep не модифицирует файл wp-config.php. Он не меняет лимит ревизий и не изменяет константы WordPress. Он просто удаляет существующие данные — ваша конфигурация остаётся неизменной.
- Не трогает медиа-библиотеку: WP-Sweep не сканирует и не чистит медиа-библиотеку. Он фокусируется исключительно на таблицах базы данных. Для поиска неиспользуемых изображений понадобится отдельный плагин типа Media Cleaner.
Реальный кейс: сколько можно выиграть
На практике результаты часто превосходят ожидания. База данных среднестатистического WordPress-сайта, которому больше двух лет и который никогда не проходил процедуру очистки, содержит от 30 до 50 процентов мусора. Один реальный проект, с которым довелось работать: интернет-магазин на WooCommerce, 3 года активной работы, 1 200 товаров, 450 опубликованных записей в блоге. После стандартного аудита выяснилось, что база данных «весит» 486 мегабайт. После прогона WP-Sweep — 241 мегабайт. То есть больше половины объёма занимал мусор: 11 000 ревизий товаров, 8 500 ревизий записей, 22 000 спам-комментариев и 4 700 осиротевших метаданных. Время генерации главной страницы каталога сократилось с 3,4 до 1,9 секунды. Это не магия — это просто удаление данных, которые не должны были накапливаться. На хостингах с жёсткими лимитами по размеру базы данных (а такие встречаются на дешёвых тарифах) очистка через WP-Sweep может быть разницей между работающим сайтом и превышением квоты.
Перед запуском любой очистки:
- Создайте полный бэкап базы данных через панель хостинга, плагин резервного копирования типа UpdraftPlus или командную строку с mysqldump
- Переведите сайт в режим обслуживания, если ожидается длительная очистка (более 10 000 элементов)
- Запустите очистку на staging-копии, если не уверены в содержимом определённых категорий
- После очистки проверьте, что сайт работает корректно — откройте индекс блога, поиск и все функции, зависящие от плагинов
Часто задаваемые вопросы
Безопасно ли удалять все ревизии записей?
Да, для большинства сайтов. Ревизии — это исторические копии ваших записей. Их удаление никак не влияет на опубликованный контент. Единственная причина сохранять ревизии — если вы используете их как историю версий для юридических или редакционных целей. Если нет — удаление безопасно и может резко сократить размер базы данных.
Что происходит с моими опубликованными записями при очистке?
Ничего. WP-Sweep удаляет только данные, которые не используются, осиротели, дублированы или явно помечены к удалению (как записи в корзине). Опубликованные записи, страницы и их метаданные никогда не затрагиваются.
Сколько времени занимает очистка?
Зависит от объёма данных. Очистка 10 000 ревизий занимает 30-60 секунд на типичном виртуальном хостинге. Очистка 100 000 элементов может занять несколько минут. Плагин обрабатывает элементы по одному через функции WordPress, что медленнее прямого SQL, но безопаснее.
Можно ли отменить очистку?
Нет. Для данных, удалённых WP-Sweep, нет кнопки отмены или корзины. После нажатия кнопки очистки данные удаляются безвозвратно. Именно поэтому необходимо создавать бэкап перед любой операцией очистки.
Удаляет ли WP-Sweep специфичные для плагинов данные?
Нет, WP-Sweep удаляет только стандартные типы данных WordPress: ревизии, черновики, комментарии, метаданные, термины и транзиенты. Данные, хранимые плагинами в кастомных таблицах или сериализованных массивах внутри таблицы опций, не обнаруживаются и не удаляются.
Можно ли настроить автоматическую очистку по расписанию?
Да. WP-Sweep включает функцию планирования, позволяющую настроить выполнение конкретных очисток через регулярные интервалы. Это полезно для сайтов с высокой посещаемостью, где ревизии и спам накапливаются быстро.
Работает ли WP-Sweep на мультисайте WordPress?
Да, WP-Sweep полностью совместим с мультисайтом. При сетевой активации каждый подсайт может запускать очистки независимо через свою панель управления. Суперадминистратор также может запускать очистки на всех подсайтах из сетевой админки.
Улучшит ли WP-Sweep скорость моего сайта?
Может, особенно если база данных сильно раздута. Сайты с тысячами ревизий и спам-комментариев часто видят ускорение загрузки на 15-25% после очистки. Однако очистка базы сама по себе не заменяет правильное кэширование и хорошо оптимизированную тему.
Нужно ли оставлять WP-Sweep установленным после очистки?
Нет. WP-Sweep можно удалить после очистки. Плагину не нужно быть активным для поддержания результата — данные, которые он удаляет, удалены навсегда. Если хотите запускать периодические очистки, оставьте его и используйте функцию планирования.
Как часто нужно запускать WP-Sweep?
Для сайтов с высокой посещаемостью и частыми обновлениями — ежемесячно. Для типичных блогов — раз в квартал. Для сайтов с низкой посещаемостью — перед любой миграцией или крупным обновлением. Оптимальная частота — когда база накопила достаточно мусора, чтобы оправдать время на очистку.
Нажмите для реакции



