您好
我知道这个问题已经讨论过很多次了
但是我在WordPress博客中有一个大表的具体问题
我有大约50K的帖子,帖子标签超过100K
在进行搜索时,需要大量的内存和CPU资源
目前我正在将myISAM用于wp_posts和wp_posts_meta
所以我想知道你的意见,我应该把它改成InnoDB吗?
WordPress博客主机在我的vps上使用2GB RAM和4核CPU使用CentOS 5.我尝试优化MySQL配置以及使用数据库缓存插件。
InnoDB会解决我的问题吗?如果之前被问过,请原谅我。我只是想知道你的专家意见。
谢谢
伊万
答案 0 :(得分:3)
清除帖子和页面修订将大大减少WP数据库的大小 - 在某些情况下高达90% - 速度很快。
在phpmyadmin中作为SQL查询运行以删除修订版;根据需要更改表格前缀:
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'
然后优化所有表格。然后添加
define ('WP_POST_REVISIONS', FALSE);
靠近wp-config.php的顶部以禁用将来的修订。
答案 1 :(得分:2)
在慢速SELECT语句中使用EXPLAIN来查看查询计划。现在你可以猜到为什么事情变得缓慢并消耗掉所有记忆。你索引了正确的列吗?你的SQL写得正确吗?
当大多数活动是只读时,MyISAM应该没问题。 MyISAM还为您提供全文搜索,在这种情况下您可能需要的内容。 innoDB没有全文搜索。
答案 2 :(得分:2)
切换表格类型不会加快任何搜索速度。 InnoDB只会在您遇到锁定问题时提供帮助。由于博客数据变化不大,因此您不太可能遇到锁定问题。 听起来问题是全文搜索。我会寻找一个插件来添加一个全文索引并使用该索引进行搜索。