Вопрос или проблема
У меня проблема на сайте WP. Сайт зависает, потому что больше нет доступного дискового пространства.
Ищя, я обнаружил, что размер таблицы wp_options составляет 12 ГБ, но всего около 1100 строк:
Есть какие-либо идеи? Заранее спасибо
[ОБНОВЛЕНИЕ 1]
Если я экспортирую таблицу wp_options, удаляю и импортирую, размер уменьшается до 9,7 МБ:
У меня не было возможности оптимизировать таблицу с помощью OPTIMIZE TABLE wp_options
, но я попробую это сделать, если это произойдет снова
[ОБНОВЛЕНИЕ 2]
Проблема все еще существует. Я попытался выполнить OPTIMIZE TABLE wp_options;
без результатов:
Мне было бы интересно подтвердить, что вы там видите, чтобы убедиться, что это действительно эта таблица. MySQL не должен так вести себя, если у вас действительно нет 12 ГБ в какой-то строке. Но если вы можете выполнять SQL в этой базе данных, возможно, вы захотите попробовать команду MySQL OPTIMIZE TABLE, которая просит MySQL проверить, может ли он оптимизировать хранилище для таблицы. Поэтому вы можете попробовать выполнить запрос:
OPTIMIZE TABLE wp_options;
Если это не сработает, пожалуйста, разместите полный скриншот причин, по которым вы думаете, что это эта таблица, и скажите, можете ли вы, например, выполнить mysqlbackup, так как удаление и восстановление таблицы может быть вариантом.
EDIT: Я немного поищу, и это может быть известная проблема в зависимости от настройки InnoDB в MySQL. Дополнительную информацию и потенциальные настройки для изменения можно найти здесь: https://www.ibm.com/support/pages/mysql-tables-grow-very-large-even-though-purger-enabled
Обратите внимание на следующее
-
Использование плагинов
плагины, которые отмечают статус/изменение в таблице wp_options (сканирование безопасности, крон-задачи, API и т.д.)
-
Инспекция wp_options
Столбец “Autoload”
Автозагружаемые данные — это данные, которые загружаются на каждой странице вашего сайта на WordPress.
и поля с именем “Transients” в столбце “option_name”
стандартизованный способ хранения кэшированных данных в базе данных.
Смотрите следующие ссылки для получения более подробной информации
https://kinsta.com/knowledgebase/wp-options-autoloaded-data/
https://wordpress.stackexchange.com/questions/6602/are-transients-garbage-collected
https://developer.wordpress.org/apis/handbook/transients/
У одного из блогов, которыми я управляю, возникла эта проблема.
Таблица wp_option была загружена ГиБ ненужными данными.
Это происходит, когда некоторые плагины вставляют метаданные, данные уведомлений и т.д. в wp_option, но не удаляют эти данные. Некоторые из плагинов – Woo Commerce, Monster Insights, Astra theme… (Извините, если эта ошибка решается.)
Чтобы решить проблему:
- Сначала получите доступ к панели phpmyadmin.
- Перейдите в SQL и выполните следующую SQL команду:
SELECT 'автозагруженные данные в KiB' as name, ROUND(SUM(LENGTH(option_value))/ 1024) as value FROM wp_options WHERE autoload='yes' UNION SELECT 'количество автозагруженных данных', count(*) FROM wp_options WHERE autoload='yes' UNION (SELECT option_name, length(option_value) FROM wp_options WHERE autoload='yes' ORDER BY length(option_value) DESC LIMIT 10)
- Найдите строку, которая потребляет ГиБ данных. (Ищите строку значения, которая имеет 6-значное значение.)
- Удалите строку.
Это решило проблему.
Ссылки:
https://kinsta.com/knowledgebase/wp-options-autoloaded-data/
Ответ или решение
Конечно! Вот полный ответ на ваш вопрос о проблеме с огромной таблицей wp_options в WordPress.
Проблема с таблицей wp_options в WordPress
У вас возникла серьезная проблема с таблицей wp_options
, которая занимает 12 ГБ. При этом она содержит всего около 1100 строк. Это вызывает нехватку дискового пространства, что влияет на работу вашего сайта. Давайте рассмотрим возможные причины и решения этой проблемы.
Причины роста таблицы wp_options
-
Автозагрузка данных (autoloading) из таблицы:
- Данные, которые загружаются на каждую страницу вашего сайта, могут занимать много места. Они хранятся в колонке
autoload
таблицыwp_options
. Часто плагины и темы создают очень большие записи в этой колонке, что может привести к значительному увеличению размера таблицы.
- Данные, которые загружаются на каждую страницу вашего сайта, могут занимать много места. Они хранятся в колонке
-
Временные данные (transients):
- Временные данные хранятся в wp_options и иногда могут накапливаться, если они не удаляются должным образом. Если плагины или темы создают временные записи и не очищают их, это может вызвать рост размера таблицы.
-
Неактуальные данные из плагинов:
- Некоторые плагины могут добавлять метаданные, уведомления и другую информацию в wp_options и не удаляют устаревшие данные. Примеры таких плагинов могут включать WooCommerce, Monster Insights и некоторые темы.
Решения проблемы
-
Проверка автозагружаемых данных:
- Выполните следующий SQL-запрос в phpMyAdmin, чтобы проверить, сколько данных загружается автоматически и какие записи занимают больше всего места:
SELECT 'autoloaded data in KiB' as name, ROUND(SUM(LENGTH(option_value))/ 1024) as value FROM wp_options WHERE autoload='yes' UNION SELECT 'autoloaded data count', count(*) FROM wp_options WHERE autoload='yes' UNION (SELECT option_name, length(option_value) FROM wp_options WHERE autoload='yes' ORDER BY length(option_value) DESC LIMIT 10)
- Выполните следующий SQL-запрос в phpMyAdmin, чтобы проверить, сколько данных загружается автоматически и какие записи занимают больше всего места:
-
Удаление ненужных записей:
- Определите строки, которые занимают много места (обычно с 6-значными значениями в
value
) и удалите их. Будьте осторожны: убедитесь, что вы не удаляете важные данные.
- Определите строки, которые занимают много места (обычно с 6-значными значениями в
-
Очистка временных данных:
- Запустите запрос для удаления временных данных:
DELETE FROM wp_options WHERE option_name LIKE '_transient_%' OR option_name LIKE '_site_transient_%';
- Это поможет удалить все временные записи, которые не нужны.
- Запустите запрос для удаления временных данных:
-
Оптимизация таблицы:
- После очистки данных выполните команду
OPTIMIZE TABLE wp_options;
, чтобы уменьшить размер таблицы, если это еще не было сделано.
- После очистки данных выполните команду
-
Анализ плагинов:
- Проверьте установленные плагины и отключите или замените те, которые могут создавать избыточные данные в
wp_options
. Обновите плагин, если доступна новая версия, так как проблема может быть известным багом.
- Проверьте установленные плагины и отключите или замените те, которые могут создавать избыточные данные в
-
Мониторинг ситуации:
- Регулярно мониторьте размер таблицы и создавайте резервные копии базы данных, чтобы избежать серьезных проблем в будущем.
Следуя этим шагам, вы сможете значительно уменьшить размер таблицы wp_options
и предотвратить подобные проблемы в будущем. Если проблема будет продолжаться, возможно, стоит обратиться за профессиональной помощью или провести аудит используемых плагинов и тем.