如何删除WordPress数据库表中的孤立键?


10

特别是在桌子上wp_options。经过近两年的博客制作,似乎增加了很多,但我不知道其中有多少废话。

您是否知道可以与WordPress 3.0或安全查询一起运行以搜索孤立键/行的插件?

Answers:


7

没有任何查询可以确定要100%删除所有未使用的内容,而不删除这些内容,因为任何主题或插件都可以向wp_options表中添加选项。尽管如此,您只需付出一点点努力就可以清楚地知道哪些未使用,然后手动确定哪些要删除,哪些不删除。

您可以将以下代码临时放入主题functions.php文件中,然后访问面向公众的网站上的每个(类型)页面,更重要的是访问管理控制台中的所有管理页面。完成后,您可以打开wp_options表并查看字段use_count(由下面的代码添加)以查看哪些选项的use_count值等于零(使用计数几乎没有意义,除了读取或更新的值大于1之外)自您添加此代码以来,至少有一次。)

global $wpdb;
header('Content-Type:text/plain');
$results = $wpdb->get_results("SHOW COLUMNS FROM wp_options WHERE Field='use_count'");
if (count($results)==0) {
    $wpdb->query("ALTER TABLE {$wpdb->options} ADD COLUMN use_count int UNSIGNED NOT NULL DEFAULT '0' AFTER autoload");
}

add_action('all','monitor_get_option_usage');
function monitor_get_option_usage($filter){
    if (preg_match('#^option_(.*)$#',$filter)) {
        increment_option_use_count(substr($filter,7));
    }
}
add_action('updated_option','monitor_update_option_usage');
function monitor_update_option_usage($option){
    increment_option_use_count($option);
}
function increment_option_use_count($option) {
    global $wpdb;
    $wpdb->query("UPDATE {$wpdb->options} SET use_count = use_count + 1 WHERE option_name = '$option'");
}

使用此工具,您可能可以识别与已久的插件,以前的主题相关的选项,甚至是您早先添加但不再使用的自己的选项。将它们全部导出到备份中(以防万一),然后删除您愿意删除的那些。完成操作后,您可以删除该use_count字段(如果需要的话,也可以保留该字段),也可以从functions.php文件中删除上面的代码。

尽管这仍然不完美,但总比没有好。希望能帮助到你?


强烈建议为此使用memcached / incr(),而不是潜在的大量数据库写入。
Denis de Bernardy 2010年

3
@Denis-由于memcached需要高级服务器设置,而在大多数WordPress网站托管的共享服务器上,这甚至是不可能的,并且由于这是一次性的或偶发的诊断程序,所以我不明白为什么您会强调此需求对于此用例的 memcached ?也许我遗漏了一些东西,您能详细说明为什么必须搬到VPS或专用服务器并学习如何使用或让某人配置memcached的人应该这样做是为了避免在极少数情况下避免大量数据库命中使用过的保养程序?
MikeSchinkel 2010年

4

清洁选项插件对我来说效果很好。作者对该插件的描述似乎符合您的需求:“查找孤立的选项,并允许将其从wp_options表中删除。”

我还没有亲自尝试过WP-Optimize,但是那看起来也很有希望。它说它支持WP 2.7(而“干净选项”仅提及对WP 2.3的明确支持),太好了!


2

这不一定能消除与的问题,wp_options但我已经使用WP-Optimize在我的3.0站点上解决了许多数据库大小调整问题。它清除不需要的帖子修订,垃圾评论,并可以自动解决很多问题。在我的主博客上,数据库从30MB减少到6MB以下,并且现在运行起来更加流畅。


1

我在我的站点上同时运行Clean Options和WP_Optimize,并且该组合在保持数据库良好状态方面做得很出色。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.