Если WordPress со временем начинает отвечать медленнее, а в админке появляются задержки, часто проблема не в «тяжёлой теме», а в базе данных. На живых сайтах она постепенно забивается ревизиями записей, автосохранениями, спам-комментариями, временными данными плагинов и другими остатками, которые уже не нужны, но продолжают нагружать запросы.
Хорошая новость в том, что чистить базу можно без радикальных мер. Обычно достаточно убрать лишние записи, сократить их накопление и не трогать то, что действительно нужно сайту. Ниже — практический порядок действий, который подходит для большинства обычных установок WordPress.
С чего начать: что именно замедляет базу
Перед чисткой важно понимать, что в WordPress нагрузку создают не только «большие таблицы», но и большое количество мелких записей. Самые частые источники мусора:
- ревизии записей и страниц;
- автосохранения в редакторе;
- спам и корзина комментариев;
- временные данные плагинов, или transients;
- старые метаданные записей, пользователей и таксономий;
- остатки удалённых плагинов, которые оставили свои таблицы или записи в стандартных таблицах WordPress.
Не каждая «большая база» сама по себе проблема. Если сайт работает быстро, а резервные копии и хостинг не жалуются, чистка ради чистки не нужна. Но если админка тормозит, поиск по записям стал медленным, а таблицы разрастаются без видимой причины, база заслуживает внимания.
Сделайте резервную копию до любых изменений
Это не формальность. Чистка базы — одна из тех операций, где ошибка может привести к потере контента, настроек или пользовательских данных. Перед началом сохраните полную резервную копию файлов и базы данных. Если у хостинга есть встроенный бэкап, этого часто достаточно, но лучше иметь и отдельную копию, которую можно быстро восстановить вручную.
Если вы работаете через phpMyAdmin, не ограничивайтесь экспортом одной таблицы. Нужна именно полная база. Если используете плагин резервного копирования, проверьте, что в архив входит и база, и файлы сайта.
Уберите ревизии и ограничьте их количество
Ревизии — одна из самых частых причин разрастания таблицы wp_posts. WordPress сохраняет промежуточные версии записей и страниц, чтобы можно было откатиться назад. Это полезно, но на сайтах с активной редактурой ревизий накапливается слишком много.
Сначала можно удалить уже накопленные ревизии. Если у вас есть доступ к базе через phpMyAdmin или другой SQL-интерфейс, перед этим обязательно проверьте резервную копию. Для удаления ревизий используется стандартный тип записей revision:
DELETE FROM wp_posts WHERE post_type = 'revision';После этого имеет смысл ограничить количество будущих ревизий. В файле wp-config.php можно задать лимит, например две или три ревизии на запись:
define( 'WP_POST_REVISIONS', 3 );Если поставить false, ревизии будут отключены полностью, но для большинства сайтов это плохая идея: при редактировании контента вы потеряете удобный откат. Практичнее ограничить число, а не выключать механизм совсем.
Автосохранения: не отключать, а не раздувать ими базу
Автосохранение в WordPress помогает не потерять текст при сбое браузера или соединения. Полностью отключать его обычно не стоит. Но если редакторы долго работают с материалами, автосохранения тоже создают лишние записи.
Здесь задача не в том, чтобы убрать автосохранения, а в том, чтобы не допускать их избыточного накопления. На практике помогает сочетание двух мер: ограничение ревизий и нормальная дисциплина работы с контентом. Если редакторы открывают одну и ту же запись на часы, а потом многократно обновляют её без необходимости, база растёт быстрее.
Важно: менять интервал автосохранения можно, но это уже тонкая настройка. Для большинства сайтов она не нужна. Если вы не уверены, лучше не трогать этот параметр без явной причины.
Очистите спам, корзину и временные данные
Следующий источник мусора — комментарии и временные записи. На сайтах с открытыми комментариями спам быстро забивает таблицы и усложняет работу админки. Удаляйте не только спам, но и старую корзину комментариев, если она давно не очищалась.
Транзиенты — это временные данные, которые WordPress и плагины используют для кэша и служебных задач. Обычно они сами истекают, но иногда остаются в базе дольше, чем нужно. Для их очистки есть несколько безопасных вариантов:
- через плагины обслуживания базы;
- через инструменты хостинга;
- через WP-CLI, если он доступен на вашем сервере.
Если у вас есть WP-CLI, можно удалить устаревшие транзиенты командой:
wp transient delete --expiredЭто безопаснее, чем вручную удалять записи в таблицах, потому что команда работает именно с просроченными временными данными. Но WP-CLI доступен не на каждом хостинге, поэтому не стоит считать его обязательным способом.
Что можно чистить вручную, а что лучше не трогать
В базе WordPress есть данные, которые можно удалить безболезненно, и есть те, которые лучше не трогать без понимания последствий. Ниже — практическое разделение.
| Можно чистить | Когда это уместно | Риск |
|---|---|---|
| Ревизии | Если их накопилось слишком много | Потеря старых версий контента |
| Спам и корзина комментариев | Если комментарии не нужны или давно не очищались | Минимальный |
| Просроченные транзиенты | Если сайт и плагины активно используют временные данные | Низкий |
| Черновики и авточерновики старых записей | Если они больше не нужны редакции | Потеря незавершённых материалов |
А вот что лучше не удалять вручную без точного понимания:
- записи и метаданные активных плагинов;
- таблицы, которые создал плагин и которые он продолжает использовать;
- пользовательские поля, если вы не знаете, к чему они относятся;
- служебные записи темы и плагинов, которые хранят настройки.
Самая частая ошибка — удалить «всё лишнее» по названию таблицы или по размеру, не проверив, кто именно использует эти данные. После этого сайт может начать вести себя странно, а проблема окажется уже не в производительности, а в сломанных настройках.
Сократите будущий рост базы, а не только уберите мусор
Разовая чистка помогает, но эффект быстро исчезает, если сайт продолжает накапливать мусор теми же темпами. Чтобы база не разрасталась снова, полезно сразу настроить несколько вещей.
- Ограничить число ревизий в
wp-config.php. - Регулярно очищать спам и корзину комментариев.
- Проверять плагины, которые создают много временных данных или собственных таблиц.
- Не держать на сайте неиспользуемые плагины «на всякий случай».
- Следить за тем, чтобы редакторы не создавали лишние дубли записей и черновиков.
Если на сайте много плагинов, особенно для форм, статистики, кэша и маркетинга, именно они часто создают лишние записи в базе. После удаления плагина проверьте, не остались ли его таблицы и данные. Но удалять их стоит только если вы уверены, что плагин больше не нужен и не хранит в этих таблицах важную информацию.
Как проверить, что база действительно стала легче
После чистки не нужно гадать по ощущениям. Проверьте результат по нескольким признакам:
- админка открывается быстрее, особенно список записей и комментариев;
- таблица
wp_postsстала меньше за счёт удаления ревизий; - уменьшилось число спам-комментариев и записей в корзине;
- на хостинге снизилась нагрузка на MySQL в пиковые моменты;
- редактирование материалов стало менее «тяжёлым».
Если у вас есть доступ к phpMyAdmin, можно сравнить размер таблиц до и после. Но ориентироваться только на размер не стоит: важнее, как сайт ведёт себя в реальной работе. Иногда база уменьшается незначительно, а скорость заметно улучшается за счёт удаления лишних ревизий и мусорных записей.
Когда лучше не делать чистку вручную
Если сайт большой, с множеством кастомных полей, сложными плагинами и активной редакцией, ручная чистка через SQL уже не лучший вариант. В такой ситуации безопаснее использовать инструменты, которые понимают структуру WordPress и не трогают лишнее. Особенно это важно, если вы не уверены, какие таблицы относятся к каким плагинам.
Для типового сайта на WordPress обычно достаточно стандартных действий: резервная копия, удаление ревизий, очистка спама и транзиентов, ограничение будущего роста. Этого хватает, чтобы заметно снизить нагрузку на базу без риска сломать сайт.
Если нужен более удобный способ чистить дубли, мусорные данные и служебные записи без ручной работы с базой, для WordPress есть плагины оптимизации, которые берут на себя часть этих задач. Но даже с ними сначала стоит понимать, что именно вы удаляете и зачем.