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

После удаления плагинов часть созданных ими записей может оставаться в базе данных. Дополнительную нагрузку создают устаревшие transient-записи, большие сериализованные массивы и параметры, которые WordPress загружает автоматически при каждом запросе. В результате увеличивается объем обрабатываемых данных, расходуется больше оперативной памяти PHP, а выполнение отдельных операций может замедляться.
В этом руководстве разберем, как проверить таблицу wp_options, найти неиспользуемые настройки, определить осиротевшие данные удаленных плагинов и безопасно очистить базу данных с помощью SQL, WP-CLI и специализированных инструментов.
Краткий ответ
Чтобы очистить таблицу wp_options в WordPress, сначала создайте резервную копию базы данных, затем найдите устаревшие transient-записи, большие autoload-параметры и настройки удаленных плагинов. Проверьте принадлежность каждой записи, удалите подтвержденные ненужные данные через phpMyAdmin или WP-CLI и оптимизируйте таблицу MySQL.
Что такое таблица wp_options и какие данные в ней хранятся
Таблица wp_options является одной из основных таблиц базы данных WordPress. Она используется для хранения глобальных настроек сайта, параметров активной темы, конфигурации плагинов, информации о доступных обновлениях и временных данных.
В отличие от таблиц записей и пользователей, wp_options не содержит непосредственно публикации или учетные записи. Ее основная задача — предоставлять WordPress и установленным расширениям доступ к сохраненным настройкам.
Стандартная таблица содержит следующие поля:
option_id— уникальный идентификатор записи.option_name— название параметра, по которому WordPress обращается к настройке.option_value— значение параметра. Это может быть строка, число, массив или сериализованный объект.autoload— определяет, должна ли настройка автоматически загружаться при инициализации WordPress.
Обратите внимание: префикс таблицы не всегда равен wp_. Он задается в файле wp-config.php с помощью переменной $table_prefix. Если при установке WordPress использовался другой префикс, во всех приведенных ниже SQL-запросах необходимо заменить wp_options на фактическое название таблицы.
Почему таблица wp_options разрастается и замедляет WordPress
Само по себе большое количество записей не означает, что сайт работает медленно. Гораздо важнее содержание таблицы, размер загружаемых настроек и то, как часто WordPress обращается к этим данным.
Наиболее распространенные причины разрастания wp_options следующие.
1. Остатки удаленных плагинов
Некоторые плагины при удалении автоматически очищают созданные ими настройки, но далеко не все разработчики реализуют такую функцию. В результате после деинсталляции расширения в базе данных могут оставаться десятки или сотни записей.
Это могут быть настройки SEO-плагинов, конструкторов страниц, систем безопасности, форм обратной связи, интеграций с внешними сервисами и инструментов аналитики.
Такие данные называются осиротевшими (orphaned options), поскольку исходный плагин уже отсутствует, а созданные им записи продолжают занимать место в базе данных.
2. Устаревшие transient-записи
Transients — это механизм временного хранения данных WordPress. Он используется для кэширования результатов запросов, информации о внешних сервисах, обновлениях и других промежуточных данных.
Transient-записи могут иметь срок действия, после которого их содержимое считается устаревшим. Однако физическое удаление таких данных не обязательно происходит сразу после истечения срока. Поэтому в таблице могут накапливаться записи, которые уже не представляют практической ценности.
3. Избыточные параметры autoload
Параметр autoload определяет, какие настройки автоматически загружаются WordPress. Такие данные могут использоваться на каждой странице сайта, даже если конкретная настройка нужна только отдельному плагину или определенному разделу административной панели.
Если несколько расширений сохраняют большие массивы настроек с автоматической загрузкой, общий объем данных может существенно увеличиться.
В результате PHP приходится обрабатывать дополнительные данные при инициализации WordPress. Это может увеличивать потребление памяти и время выполнения запросов, особенно на сайтах с большим количеством плагинов.
4. Кэш, журналы и временные данные
Некоторые расширения сохраняют в wp_options результаты проверок, журналы уведомлений, информацию о состоянии интеграций и другие служебные данные.
Если разработчик не предусмотрел автоматическое удаление устаревшей информации, таблица постепенно увеличивается. Особенно внимательно стоит проверять сайты, на которых часто устанавливались и удалялись плагины, проводились миграции или менялись системы кэширования.
Как проверить размер таблицы wp_options перед очисткой
Прежде чем удалять записи, необходимо определить масштаб проблемы. Для этого можно использовать phpMyAdmin, Adminer или подключиться к MySQL через SSH.
Проверка количества записей и объема данных
Выполните следующий SQL-запрос:
SELECT
COUNT(*) AS total_rows,
SUM(
CASE
WHEN autoload IN ('yes', 'on', 'auto', 'auto-on')
THEN 1 ELSE 0
END
) AS autoloaded_rows,
ROUND(SUM(LENGTH(option_value)) / 1024 / 1024, 2) AS total_mb,
ROUND(
SUM(
CASE
WHEN autoload IN ('yes', 'on', 'auto', 'auto-on')
THEN LENGTH(option_value)
ELSE 0
END
) / 1024 / 1024,
2
) AS autoloaded_mb
FROM wp_options;
Запрос покажет четыре показателя:
- Общее количество записей в таблице.
- Количество записей, отмеченных для автоматической загрузки.
- Суммарный размер значений всех параметров.
- Объем данных, которые автоматически загружаются WordPress.
Это предварительная оценка размера содержимого option_value, а не точный размер таблицы на диске: она не учитывает индексы, служебные структуры MySQL и накладные расходы хранения.
Универсального идеального количества записей в wp_options не существует. На небольшом корпоративном сайте их может быть несколько сотен, а на интернет-магазине с WooCommerce и большим количеством расширений — несколько тысяч. Ориентироваться следует прежде всего на состав данных и объем autoload.
Как найти самые большие autoload-записи в wp_options
Одна из наиболее полезных проверок — поиск параметров, которые занимают больше всего места и автоматически загружаются WordPress.
Выполните запрос:
SELECT
option_name,
ROUND(LENGTH(option_value) / 1024, 2) AS size_kb,
autoload
FROM wp_options
WHERE autoload IN ('yes', 'on', 'auto', 'auto-on')
ORDER BY LENGTH(option_value) DESC
LIMIT 30;
В результате вы получите список из 30 самых объемных параметров с указанием их размера.
Особое внимание стоит обратить на следующие записи:
rewrite_rules— правила постоянных ссылок WordPress.cron— список запланированных задач WP-Cron._site_transient_*— временные данные, связанные в том числе с проверкой обновлений.wp_user_roles— информация о пользовательских ролях и разрешениях.- Параметры Elementor, WooCommerce, Yoast SEO, Rank Math и других расширений.
Большой размер записи не означает, что ее необходимо удалить. Например, rewrite_rules может занимать значительный объем на сайте с большим количеством типов записей и таксономий. Настройки конструктора страниц и SEO-плагинов также могут быть необходимы для корректной работы сайта.
Задача этого этапа — определить потенциально проблемные параметры, а затем выяснить, какие компоненты WordPress их используют.
Как найти осиротевшие данные удаленных плагинов
После удаления плагина его настройки иногда продолжают храниться в базе данных. Чтобы обнаружить такие записи, можно сгруппировать параметры по началу названия.
Группировка записей по префиксам
Используйте следующий запрос:
SELECT
SUBSTRING_INDEX(option_name, '_', 3) AS option_prefix,
COUNT(*) AS total_options,
ROUND(SUM(LENGTH(option_value)) / 1024, 2) AS total_kb
FROM wp_options
GROUP BY option_prefix
HAVING COUNT(*) > 10
ORDER BY total_kb DESC
LIMIT 50;
Запрос поможет обнаружить группы параметров, которые занимают значительное место в таблице.
Например, можно встретить следующие префиксы:
elementor_— настройки и служебные параметры Elementor.wordfence_— данные плагина безопасности Wordfence.redirection_— параметры управления перенаправлениями.woocommerce_иwc_— настройки и служебные данные WooCommerce.wpseo_— параметры Yoast SEO._transient_— временные данные WordPress.
Важно понимать, что префикс не всегда однозначно идентифицирует плагин. Некоторые расширения используют несколько пространств имен, а отдельные параметры могут совместно использоваться другими компонентами сайта.
Поэтому найденные группы необходимо проверять вручную. Сравните названия записей с установленными и ранее использовавшимися плагинами, изучите документацию разработчика и при необходимости проверьте исходный код расширения.
Как найти просроченные transient-записи
Transient-записи — один из наиболее удобных объектов для проверки при очистке базы данных. Для временных параметров WordPress обычно создает две записи:
_transient_название— непосредственно сохраненное значение._transient_timeout_название— время окончания действия записи в формате Unix timestamp.
Чтобы определить количество просроченных transient-записей, выполните запрос:
SELECT COUNT(*) AS expired_transients
FROM wp_options AS a
INNER JOIN wp_options AS b
ON b.option_name = CONCAT(
'_transient_timeout_',
SUBSTRING(a.option_name, 12)
)
WHERE LEFT(a.option_name, 11) = '_transient_'
AND LEFT(a.option_name, 19) <> '_transient_timeout_'
AND CAST(b.option_value AS UNSIGNED) < UNIX_TIMESTAMP();
Запрос находит временные параметры, для которых существует соответствующая запись времени окончания действия, и проверяет, истек ли срок их хранения.
Он предназначен для обычных transient-записей. Сетевые transient-параметры с префиксом _site_transient_ требуют отдельной проверки.
Обратите внимание: наличие большого количества transient-записей не обязательно свидетельствует о проблеме. Это штатный механизм кэширования, используемый WordPress и плагинами. Удалять нужно только действительно устаревшие данные либо кэш, который допустимо пересоздать.
Как безопасно очистить таблицу wp_options
Перед выполнением любых операций удаления необходимо сделать полную резервную копию базы данных. Это особенно важно, если сайт использует WooCommerce, конструкторы страниц, сложные SEO-плагины или собственные разработки.
Шаг 1. Создайте резервную копию базы данных
Если у вас есть SSH-доступ, можно использовать mysqldump:
mysqldump -u DB_USER -p DB_NAME wp_options > wp_options_backup.sql
Замените DB_USER и DB_NAME на реальные имя пользователя и название базы данных.
Если SSH недоступен, экспортируйте базу данных через phpMyAdmin или используйте резервное копирование в панели управления хостингом.
Желательно также проверить, что резервная копия действительно создана и доступна для восстановления.
Шаг 2. Удалите просроченные transient-записи
Если вы проверили просроченные параметры и хотите удалить их вместе с соответствующими записями времени окончания действия, используйте следующий SQL-запрос:
DELETE a, b
FROM wp_options AS a
INNER JOIN wp_options AS b
ON b.option_name = CONCAT(
'_transient_timeout_',
SUBSTRING(a.option_name, 12)
)
WHERE LEFT(a.option_name, 11) = '_transient_'
AND LEFT(a.option_name, 19) <> '_transient_timeout_'
AND CAST(b.option_value AS UNSIGNED) < UNIX_TIMESTAMP();
Операция удаляет только те пары transient-записей, для которых найден соответствующий просроченный timeout.
Если у вас есть собственные плагины или нестандартная реализация кэширования, предварительно убедитесь, что данные действительно можно пересоздать.
Шаг 3. Удалите настройки неиспользуемых плагинов
Если вы точно установили, что определенный плагин удален, а его настройки больше не нужны, можно удалить соответствующие записи по префиксу.
Например, сначала проверьте количество найденных параметров:
SELECT
option_name,
LENGTH(option_value) AS value_size
FROM wp_options
WHERE option_name LIKE 'old_plugin_prefix_%';
Если результаты проверки подтверждают, что все найденные записи относятся к удаленному расширению, можно выполнить удаление:
DELETE FROM wp_options WHERE option_name LIKE 'old_plugin_prefix_%';
Вместо old_plugin_prefix_ укажите реальный префикс удаленного плагина.
Например, если вы окончательно отказались от определенного SEO-расширения, можно проверить параметры с его характерным префиксом. Но не следует автоматически удалять все записи с названием, похожим на название плагина: отдельные параметры могут использоваться другими компонентами сайта.
Рекомендация: не запускайте массовые DELETE-запросы для Wordfence, WooCommerce, Elementor, Yoast SEO и других крупных расширений без предварительного анализа. Удаление нужных настроек может привести к потере конфигурации, сбоям безопасности или нарушению работы сайта.
Шаг 4. Проверьте и оптимизируйте таблицу
После удаления большого количества записей можно выполнить оптимизацию таблицы:
OPTIMIZE TABLE wp_options;
Эта операция перестраивает таблицу и может освободить часть неиспользуемого пространства. Для InnoDB ее выполнение может сопровождаться дополнительными операциями перестройки и временным увеличением дискового пространства.
На больших базах данных оптимизация может занимать некоторое время и создавать дополнительную нагрузку на сервер. Поэтому на нагруженных интернет-магазинах и крупных проектах ее лучше выполнять в период минимальной посещаемости.
Как очистить wp_options с помощью WP-CLI
Если у вас есть SSH-доступ и установлен WP-CLI, многие операции можно выполнять непосредственно из командной строки без ручного написания SQL-запросов.
WP-CLI позволяет просматривать настройки, искать transient-записи и удалять временные данные с использованием штатных механизмов WordPress.
Просмотр списка параметров
wp option list --format=table
Поиск самых объемных параметров
wp option list --autoload=on --format=total_bytes
Для просмотра самих записей с детализацией можно использовать:
wp option list --autoload=on --fields=option_name,autoload --format=table
Учтите, что конкретные значения autoload зависят от версии WordPress. В новых версиях используются дополнительные состояния, поэтому при анализе всех автоматически загружаемых данных необходимо учитывать актуальную реализацию Options API.
Удаление просроченных transient-записей
Это один из наиболее безопасных способов очистки временных данных:
wp transient delete --expired
Команда удаляет просроченные transient-записи, а не все временные данные сайта.
Удаление всех transient-записей
Если вы хотите полностью сбросить временный кэш WordPress, существует команда:
wp transient delete --all
Используйте ее только в том случае, если понимаете последствия. После удаления плагины и WordPress могут заново сформировать необходимые временные данные. При этом первоначальные запросы после очистки могут выполняться медленнее из-за повторного создания кэша.
Для сетевых transient-записей в WordPress Multisite предусмотрен параметр:
wp transient delete --all --network
Подробности доступны в официальной документации WP-CLI.
Читайте также:
Таблицы базы данных WordPress, вызывающие проблемы с производительностью сайта
Как уменьшить объем autoload и ускорить загрузку WordPress
Удаление осиротевших данных — только одна часть оптимизации. На практике не менее важно разобраться с параметрами, которые автоматически загружаются при каждом запросе.
В WordPress для этого используется механизм autoload. Он позволяет загружать необходимые настройки централизованно, уменьшая количество отдельных обращений к базе данных. Однако при неправильном использовании этого механизма он может стать источником лишней нагрузки.
Как найти все автоматически загружаемые параметры
Для начала получите список наиболее крупных записей:
SELECT
option_name,
ROUND(LENGTH(option_value) / 1024, 2) AS size_kb
FROM wp_options
WHERE autoload IN ('yes', 'on', 'auto', 'auto-on')
ORDER BY LENGTH(option_value) DESC;
Далее необходимо выяснить, каким плагинам принадлежат найденные параметры и действительно ли им требуется автоматическая загрузка.
Можно ли отключить autoload для ненужной настройки?
Да, в некоторых случаях это допустимо. Если настройка используется только в административной части или при выполнении конкретного действия, автоматическая загрузка на каждой странице может быть избыточной.
Однако нельзя просто отключать autoload у всех больших параметров. Некоторые плагины рассчитывают на то, что их настройки будут доступны при ранней инициализации WordPress. Изменение поведения загрузки может вызвать ошибки или нарушить работу отдельных функций.
Если вы точно знаете, что параметр не должен загружаться автоматически, предпочтительнее использовать WP-CLI:
wp option set-autoload option_name no
Замените option_name на реальное название параметра.
Для изменения настройки используйте актуальные возможности WordPress и WP-CLI, а не массовые SQL-обновления поля autoload без понимания совместимости с версией системы.
После изменения параметров обязательно проверьте фронтенд, административную панель, корзину WooCommerce, формы и другие важные функции сайта.
Какие записи wp_options нельзя удалять
При очистке базы данных важно не перепутать осиротевшие данные с настройками, необходимыми для работы WordPress.
Следующие параметры требуют особой осторожности:
siteurl— основной адрес установки WordPress.home— адрес главной страницы сайта.active_plugins— список активированных плагинов.template— название активной темы.stylesheet— идентификатор активной темы или дочерней темы.rewrite_rules— правила обработки постоянных ссылок.cron— список запланированных задач WordPress.wp_user_roles— данные о пользовательских ролях и разрешениях.
Не стоит также удалять неизвестные сериализованные массивы только потому, что они занимают несколько сотен килобайт. В них могут храниться важные настройки конструктора страниц, интернет-магазина, системы безопасности или SEO-плагина.
Если вы не знаете назначение параметра, сначала выясните, какой компонент его создает и использует.
Очистка wp_options с помощью плагинов WordPress
Если вы не хотите работать непосредственно с SQL, можно воспользоваться специализированными инструментами оптимизации базы данных.
WP-Optimize
WP-Optimize — популярный инструмент для обслуживания баз данных WordPress. Он позволяет удалять устаревшие данные, очищать временные записи, оптимизировать таблицы и выполнять другие операции обслуживания.
Это удобный вариант для пользователей, которым нужна очистка базы данных через административную панель без постоянной работы с phpMyAdmin.
Advanced Database Cleaner
Advanced Database Cleaner ориентирован на поиск неиспользуемых данных WordPress. Он помогает обнаруживать остатки удаленных плагинов, старые параметры, временные записи и другие элементы, которые могут накапливаться в базе данных.
Перед удалением найденных объектов важно проверить, действительно ли они больше не используются установленными расширениями.
Какой способ очистки выбрать?
Выбор инструмента зависит от размера сайта, доступных прав и опыта администратора.
- phpMyAdmin — подходит для точечной диагностики и выполнения SQL-запросов.
- WP-CLI — удобен для системного администрирования, автоматизации и обслуживания нескольких сайтов.
- WP-Optimize — подходит для регулярной очистки через административную панель.
- Advanced Database Cleaner — полезен для поиска потенциально осиротевших данных.
Для серьезных проектов я рекомендую сначала проводить диагностику, а затем выполнять адресную очистку. Автоматическое удаление всех обнаруженных записей не всегда является правильным решением.
Как проверить результат очистки wp_options
После завершения работ необходимо убедиться, что база данных действительно стала компактнее, а сайт продолжает работать корректно.
Повторно выполните первоначальный запрос, который показывает общее количество записей, размер данных и объем autoload.
Сравните показатели до и после очистки:
- Уменьшилось ли количество ненужных записей?
- Сократился ли объем автоматически загружаемых данных?
- Удалены ли просроченные transient-параметры?
- Освободилось ли дисковое пространство после оптимизации таблицы?
Затем проверьте основные функции сайта:
- Открывается ли главная страница и внутренние разделы.
- Работает ли административная панель WordPress.
- Корректно ли отображается активная тема.
- Работают ли формы обратной связи и интеграции.
- Сохранились ли настройки SEO-плагинов.
- Работают ли корзина, оформление заказа и платежные системы WooCommerce.
- Выполняются ли запланированные задачи WP-Cron.
Для объективной оценки производительности сравните время ответа сервера (TTFB), количество SQL-запросов и потребление памяти PHP до и после оптимизации. Желательно проводить измерения в одинаковых условиях, с учетом состояния кэша.
Важно: сокращение размера wp_options само по себе не гарантирует ускорения сайта. На производительность также влияют хостинг, PHP, MySQL, объектный кэш, плагины, тема и внешние запросы.
Как предотвратить повторное разрастание wp_options
Разовая очистка решает накопившуюся проблему, но не устраняет ее причину. Чтобы таблица оставалась в хорошем состоянии, стоит придерживаться нескольких правил обслуживания WordPress.
Удаляйте плагины правильно
Перед удалением расширения проверьте, предусмотрена ли в нем очистка настроек и служебных данных. Некоторые плагины имеют отдельный переключатель удаления данных при деинсталляции.
Если такой функции нет, заранее изучите документацию разработчика и определите, какие параметры останутся в базе данных.
Не устанавливайте лишние расширения
Чем больше плагинов используется на сайте, тем больше потенциальных источников дополнительных настроек, кэша и служебных записей. Удаляйте расширения, которые больше не нужны, и избегайте установки нескольких инструментов с одинаковыми функциями.
Контролируйте autoload
Периодически проверяйте объем автоматически загружаемых данных. Особое внимание уделяйте крупным настройкам, которые принадлежат давно не используемым компонентам.
Используйте регулярное обслуживание базы данных
Для коммерческих сайтов и интернет-магазинов полезно предусмотреть регулярную проверку таблиц базы данных. Частота зависит от активности проекта, количества установленных расширений и интенсивности изменений.
Следите за качеством плагинов
При выборе расширений обращайте внимание на качество разработки, наличие поддержки и корректную деинсталляцию. Хорошо написанный плагин должен не только создавать необходимые данные, но и предусматривать механизм их удаления, когда пользователь отказывается от его использования.
Заключение
Таблица wp_options играет важную роль в работе WordPress, поскольку содержит настройки самой системы, активной темы и установленных расширений. Со временем в ней могут накапливаться устаревшие transient-записи, неиспользуемые параметры и данные удаленных плагинов.
Чтобы поддерживать базу данных в хорошем состоянии, необходимо периодически проверять размер таблицы, анализировать autoload, находить просроченные временные данные и удалять только те записи, назначение которых точно установлено.
Для безопасной очистки можно использовать phpMyAdmin, WP-CLI или специализированные плагины. При этом всегда начинайте с резервного копирования и не удаляйте системные параметры WordPress без необходимости.
Грамотное обслуживание wp_options помогает сократить объем лишних данных, уменьшить ненужную нагрузку на PHP и MySQL и поддерживать стабильную работу сайта. Но главное — не стремиться к минимальному количеству записей любой ценой, а устранять именно те данные, которые больше не нужны проекту.
FAQ: Часто задаваемые вопросы
Источники и дополнительная документация
- TurboPress — How to Clean Your wp_options Table (The Right Way). Практический материал по диагностике, поиску осиротевших записей и оптимизации таблицы.
- WordPress Developer Resources — Options API. Официальная документация по хранению и управлению настройками WordPress.
- WordPress Developer Resources — Transients API. Описание механизма временного хранения данных и управления transient-записями.
- WordPress Plugin Handbook — Options API. Руководство по работе с настройками в плагинах WordPress.
- WP-CLI — wp option list. Команды просмотра и анализа параметров WordPress.
- WP-CLI — wp option. Официальная документация по управлению настройками через командную строку.
- WP-CLI — wp transient. Команды управления временными данными и удаления просроченных transient-записей.
- WordPress Developer Resources — Editing wp-config.php. Документация о конфигурации WordPress, объектном кэше и хранении transient-данных.
























Комментарии к записи: 0