Недавно я заметил, что таблица wp_options
кажется немного большой. Он содержит 1161 строку и имеет размер около 2,2 МБ.
Я установил "Чистые параметры" . Похоже, что разработка остановилась на плагине еще в 2010 году, но она все еще выполняла эту работу.
Теперь у меня есть длинный список потенциально сиротских записей. Есть ли простой способ, чтобы сортировать их, и выяснить, что удалить и что сохранить? Кроме того, может ли это быть причиной возникновения проблем с производительностью на веб-сайте?
Спасибо за чтение, любые идеи приветствуются!
Обновление: плагин "Чистые параметры" вернул некоторые переменные в списке, что привело меня к выводу, что в таблице wp_options
имеется несколько сотен переходных файлов. Есть целая группа, которая выглядит так:
_site_transient_browser_5728a0f1503de54634b3716638...
_site_transient_timeout_browser_03df11ec4fda7630a5...
_transient_feed_83dcaee0f69f63186d51bf9a4...
_transient_plugin_slugs
_transient_timeout_feed_83dcaee0f69f63186d51bf9a4b...
и т.д. Как я уже сказал, есть несколько сотен строк, которые выглядят так. Безопасно ли просто сбрасывать их?
Спасибо
Вы можете безопасно сбрасывать их. Wordpress и некоторые плагины будут воссоздавать переходные процессы по мере необходимости. Переходным процессом является более или менее хранимое значение из сложного запроса. Результаты сохраняются как переходные процессы, так что система не должна выполнять общий запрос снова и снова, вместо этого он просто ищет переходный режим, если он существует и не истек. Конечно, сделайте резервную копию своей базы данных, прежде чем вносить изменения, если что-то пойдет не так!
После выполнения всех действий вы можете запустить инструкцию mysql следующим образом:
DELETE FROM `wp_options` WHERE `option_name` LIKE ('%\_transient\_%')
Оператор [ EDIT:, исправленный с помощью escape-символов, после предложения комментариев]
'%\_transient\_%'
. Не забывайте, что _
является односимвольным символом подстановки .
Вы можете удалить переходные процессы, поскольку они будут воссозданы. Могут быть нарастания истекших переходных процессов из-за ситуаций сбоя или проблем с дизайном с некоторыми плагинами. Одним из способов справиться с этим является удаление истекших переходных процессов, позволяя текущим выполнять свою функцию. Очистка только переходных процессов, срок действия которых истекает в течение нескольких дней, дает вам возможность контролировать, какие плагины приводят к устаревшим переходным процессам, и предпринимать любые действия для устранения проблем или проблем с отчетами.
Ниже перечислены таблицы параметров wp * в базе данных и удалены пять самых больших параметров переходного процесса, которые более чем за неделю устарели. Это дает достаточно времени, чтобы любой плагин удалял параметры, которые они собираются очистить.
#!/bin/bash
DBNAME="mydatabase"
DBUSER="${USER}"
DBPASSWD="secret"
MYSQLBIN=/usr/bin/mysql # OR MYSQLBIN=/usr/local/mysql/bin/mysql
MYSQL="${MYSQLBIN} -s -D ${DBNAME} -u ${DBUSER} -p${DBPASSWD}"
TMP=/var/tmp/
ENTRIES_FILE="${TMP}entries.$$"
# Find option tables
for OPTION_TABLE in $( echo 'show tables like "%wp%options";' | ${MYSQL} )
do
# Find up to five large long expired transients
${MYSQL} > ${ENTRIES_FILE} <<EOF
select option_name from ${OPTION_TABLE} where option_name in
(select concat("_transient",substr(option_name,19))
FROM ${OPTION_TABLE} WHERE option_name LIKE '_transient_timeout%' AND
option_value < UTC_TIMESTAMP() - INTERVAL 1 WEEK order by option_value)
order by length(option_value) desc limit 5;
EOF
for OPTION in $( < ${ENTRIES_FILE} )
do
echo Deleting ${OPTION} from ${OPTION_TABLE}
echo delete from ${OPTION_TABLE} where option_name = \"${OPTION}\"\; | ${MYSQL}
if [[ $? -eq 0 ]]; then
echo delete from ${OPTION_TABLE} where option_name = \"_transient_timeout${OPTION:10}\"\; | ${MYSQL}
fi
done
done
rm -f ${ENTRIES_FILE}