我最近注意到我的wp_options
表似乎有点大。它包含1161行,大小约为2.1mb。
我已经安装了Clean Options。看起来2010年插件停止了插件,但它仍然完成了这项工作。
我现在有一长串潜在的孤儿条目。是否有一种简单的方法可以对这些进行分类,并确定要删除哪些以及要保留哪些内容?此外,这是否可能导致网站出现性能问题?
感谢您的阅读,欢迎任何想法!
更新:Clean Options插件在列表中返回了一些瞬态,这使我发现wp_options
表中有几百个瞬态文件。有一大堆看起来像:
_site_transient_browser_5728a0f1503de54634b3716638...
_site_transient_timeout_browser_03df11ec4fda7630a5...
_transient_feed_83dcaee0f69f63186d51bf9a4...
_transient_plugin_slugs
_transient_timeout_feed_83dcaee0f69f63186d51bf9a4b...
等等。就像我说的,有几百行看起来像这样。转储它们是否安全?
由于
答案 0 :(得分:127)
你可以安全地转储它们。 Wordpress和一些插件将根据需要重新创建瞬变。瞬态或多或少是复杂查询的存储值。结果将保存为瞬态,以便系统不必反复执行常见查询,而只是查找瞬态(如果存在且尚未过期)。当然,在进行更改之前,请备份数据库,以免出现问题!
在备份所有内容后,您可以运行如下的mysql语句:
DELETE FROM `wp_options` WHERE `option_name` LIKE ('%\_transient\_%')
[编辑:语句在评论建议后使用转义字符修复]
答案 1 :(得分:2)
您可以删除瞬态,因为它们将被重新创建。由于故障情况或某些插件的设计问题,可能会出现过期瞬态的累积。解决这个问题的一种方法是去除过期的瞬态,同时允许当前的瞬态执行其功能。只清除过期几天的瞬态,让您有机会监控哪些插件导致过时的瞬态,并采取任何措施来解决问题或报告问题。
以下内容将在数据库中找到任何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}
答案 2 :(得分:0)
安装插件Delete Expired Transients,以每天自动清理数据库。