post

WordPress优化之清理数据库

大头(http://www.touhenda.com/)提供的优化数据库的方法,感谢大头的分享。

本文的方法,主要是用于清理已删除插件的残留键值,还有一些_transient开头的键值,清理前一定要先备份。这些键值都是保存到wp-options表中,下面的方法我也试过了,没有问题,博客竟然提速了零点几秒,很不错。

p.s.另外推荐个插件,WP-Optimize,可以删除所有修订版本、自动草稿、垃圾评论和优化数据表,后台搜索插件即可。

下面介绍手动清理wp-options表的方法:

一、用记事本新建文件,保存为qingli.php,加入下面代码:

<;?php

$hostname_blog = 'localhost';//设定数据库地址地址,一般为localhost
$database_blog = 'test';//设定数据库名
$username_blog = 'test';//设定数据库用户名
$password_blog = 'test';//设定数据库密码
$blog = mysql_pconnect($hostname_blog, $username_blog, $password_blog) or trigger_error(mysql_error(),E_USER_ERROR);

//---------------------清除垃圾信息-------------------------

//清空Rss feed垃圾信息
mysql_query('DELETE FROM wp_options WHERE option_name REGEXP '_transient_'');

//---------------------重新排列序号-------------------------

$no = 1;

function change_id($id)
{
	global $no;

	$sql = 'update wp_options set option_id = ' . $no . ' where option_id = ' . $id;
	mysql_query($sql);

	$no = $no + 1;
}

mysql_select_db($database_blog, $blog);
$query_optionRecord = 'SELECT option_id FROM wp_options ORDER BY option_id ASC';
$all_optionRecord = mysql_query($query_optionRecord);
$row_optionRecord = mysql_fetch_assoc($all_optionRecord);

//排序
do {
	change_id( $row_optionRecord['option_id'] );
} while ($row_optionRecord = mysql_fetch_assoc($all_optionRecord));

//重设计数起点
mysql_query('alter table wp_options AUTO_INCREMENT = ' . $no);

//--------------------优化wp_options表----------------------

mysql_query('OPTIMIZE TABLE wp_options');

//------------------------结束------------------------------

echo 'All Done';

?>;

二、上传到你博客的根目录,在浏览器中输入:你博客的地址/qingli.php;

三、显示成功后,进入phpmyadmin,打开wp-option表,你会发现所有的键值都按照编号顺序依次排列了;

四、最后执行以下SQL语句,表内所有的_transient_将被通通清除。

DELETE FROM wp_options WHERE option_name REGEXP '_transient_'

另:采用AKismet插件来过滤垃圾留言的话,数据库里面的wp-commentmeta表也异常的庞大,直接清空吧,不会对系统产生任何影响。

原文地址:http://www.touhenda.com/other/4291.html

    • 的确,是好方法。我现在觉得玩blog影响工作了,稍微闲点,就想浏览订阅的文章,然后四处去评论。

    • 的确,是好方法。我现在觉得玩blog影响工作了,稍微闲点,就想浏览订阅的文章,然后四处去评论。

· 542 次浏览