删除修订版本是否会对数据库性能产生积极影响?

时间:2012-07-15 作者:turbonerd

根据DBA上的这个问题。SE,我在数据库优化方面遇到了很多问题。

我只是想知道删除/禁用修订是否会对我的数据库使用产生积极影响?我们似乎没有像我预期的那样经常使用它们。

目前我已经把它设置好了,每个帖子最多可以有3个修订。

如果删除这些将提高性能,那么从数据库中删除修订的“最新”方式是什么?

提前感谢,

1 个回复
最合适的回答,由SO网友:its_me 整理而成

Michael Adams, Quantum Bug Creator at Automattic once said:

“修订内容存储在posts表中。我还不知道这会对post查询产生什么样的影响。我们将在不久的将来在WordPress.com上把开关切换到“开”,我们将更好地了解它会造成什么样的损害(如果有的话)。”

后来他们确实打开了它,还有WordPress。com公司now stores 博客上每篇文章的最后25次修订。所以,是的,你可以处理修改。

后期修订的问题是,您的数据库大小可能会变得非常大(取决于创建的修订数量),这反过来又会增加MySQL的处理负担。

Nevertheless, you can deal with it. 启用页面和数据库级缓存-W3 Total Cache 如果您的网站是从单一服务器提供服务的,请尝试WP Super Cache. 还有各种web应用程序加速器,如Varnish cache. 拥有数万条帖子的网站无论如何都必须对数据库和其他东西进行分片、从复制和主复制。

即使如此,修订(非常?)IMO,旧帖子是对资源的浪费。至于我,我会不时(每隔2-3天)删除已发布帖子的修订。

删除修订:

备份,备份,先备份。总是

如果您想使用插件删除修订和优化数据库,并保持简单,请尝试Better Delete Revisions. 您可能还想看看Revision Control.

也可以使用SQL手动执行,如下所示。

(1A) 删除WordPress博客上所有帖子和页面的修订(source):

DELETE a,b,c  
FROM wp_posts a  
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)  
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)  
WHERE a.post_type = \'revision\';
(1B) 如果您使用WordPress(Blogroll等)中的链接功能,请不要使用前面提到的SQL查询。改用这个(read why?):

DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON ( a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON ( a.ID = c.post_id )
LEFT JOIN wp_term_taxonomy d ON ( b.term_taxonomy_id = d.term_taxonomy_id)
WHERE a.post_type = \'revision\'
AND d.taxonomy != \'link_category\';
(2) 删除自动草稿:

DELETE FROM wp_posts WHERE post_status = \'auto-draft\';
(3) 优化数据库表:

OPTIMIZE TABLE `wp_commentmeta`, `wp_comments`, `wp_links`, `wp_options`, `wp_postmeta`, `wp_posts`, `wp_terms`, `wp_term_relationships`, `wp_term_taxonomy`, `wp_usermeta`, `wp_users`
NOTE: 在上面列出的SQL查询中,不要忘记替换wp_ 使用数据库表前缀

结束

相关推荐

Performance on WPMS

我的WPMS站点托管在8核/32mb RAM服务器上,但响应时间非常长。我们有大约1000个博客(单个db上有35000多个表)和70000个页面浏览量。我认为我可以缩短响应时间,将具有更多页面浏览量的博客移动到单独的DB中,并使用hyper DB插件将所有博客拆分为每个DB 100个博客。你觉得怎么样?