могу ли я удалить переходные процессы в таблице wp\_options моей установки wordpress?

<p>недавно я заметил, что моя таблица <code>wp\_options</code> кажется немного большой. он содержит 1161 ряд и имеет размер около 2,1 мб.</p><p>я установил <a href="http://wordpress.org/extend/plugins/clean-options/">чистые параметры</a> . похоже, что разработка плагина остановилась еще в 2010 году, но он все же сделал свою работу.</p><p>теперь у меня есть длинный список потенциально осиротевших записей. есть ли простой способ сортировки и определения, что удалить, а что оставить? кроме того, может ли это быть причиной проблем с производительностью сайта?</p><p>спасибо за чтение, любые идеи приветствуются!</p><p><strong> обновление </strong>: плагин clean options вернул некоторые переходные процессы в списке, что привело меня к обнаружению, что в таблице <code>wp\_options</code> есть несколько сотен временных файлов. есть целая куча, которая выглядит так:</p><ul> <li><code>\_site\_transient\_browser\_5728a0f1503de54634b3716638...</code></li> <li><code>\_site\_transient\_timeout\_browser\_03df11ec4fda7630a5...</code></li> <li><code>\_transient\_feed\_83dcaee0f69f63186d51bf9a4...</code></li> <li><code>\_transient\_plugin\_slugs</code></li> <li><code>\_transient\_timeout\_feed\_83dcaee0f69f63186d51bf9a4b...</code></li> </ul><p>и так далее. как я уже сказал, есть несколько сотен строк, которые выглядят так. безопасно ли просто выбросить их?</p><p>спасибо</p>

<p>вы можете безопасно сбросить их. wordpress и некоторые плагины воссоздают переходные процессы по мере необходимости. переходный процесс - это более или менее сохраненное значение из сложного запроса. результаты сохраняются как переходные процессы, поэтому системе не нужно выполнять общий запрос снова и снова, вместо этого она просто ищет переходный процесс, если он существует и срок его действия не истек. конечно, сделайте резервную копию вашей базы данных, прежде чем вносить изменения, чтобы что-то пошло не так!</p><p>после создания резервной копии вы можете выполнить инструкцию mysql следующим образом:</p><pre><code>delete from `wp\_options` where `option\_name` like ('%\\_transient\\_%') </code></pre><p>[<strong>edit:</strong> оператор исправлен с escape-символами, после предложения комментария]</p>

<p>вы можете удалить переходные процессы, поскольку они будут воссозданы. могут быть накопления переходных процессов с истекшим сроком действия из-за ситуаций сбоя или проблем проектирования с некоторыми плагинами. один из способов справиться с этим - удалить просроченные переходные процессы, позволяя текущим выполнять свои функции. очистка только переходных процессов, срок действия которых истек в течение нескольких дней, дает вам возможность отслеживать, какие плагины приводят к устаревшим переходным процессам, и предпринимать какие-либо действия для устранения проблем или сообщения о проблемах.</p><p>далее будут найдены все таблицы параметров wp * в базе данных и удалены пять крупнейших переходных параметров, которые устарели более чем на неделю. это дает достаточно времени любому плагину для удаления параметров, которые они собираются удалить самостоятельно.</p><pre><code>#!/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} </code></pre>