【问题标题】:InnoDB vs MyISAM for large table Wordpress blog用于大表 Wordpress 博客的 InnoDB 与 MyISAM
【发布时间】:2011-02-25 06:11:25
【问题描述】:


我知道这个问题已经讨论过很多次了。
但我在 WordPress 博客中有一个关于大表的具体问题。
我有大约 50K 帖子,帖子标签超过 100K。
搜索时会占用大量内存和 cpu 资源。
目前我正在为 wp_posts 和 wp_posts_meta 使用 MyISAM。
所以我想知道你的意见,我应该把它改成 InnoDB 吗?

我的 vps 上的 WordPress 博客主机具有 2GB RAM 和 4 核 CPU,使用 CentOS 5。我尝试优化 MySQL 配置并使用数据库缓存插件。

那么 InnoDB 会解决我的问题吗?如果之前有人问过这个问题,请原谅我。我只是想知道您的专家意见。

谢谢

伊万

【问题讨论】:

    标签: mysql wordpress innodb myisam


    【解决方案1】:

    清除帖子和页面修订将大大减少 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 的顶部以禁用未来的修订。

    【讨论】:

      【解决方案2】:

      在您的慢速 SELECT 语句中使用 EXPLAIN 以查看查询计划。现在你可以猜到为什么事情很慢并且会耗尽所有内存。您是否索引了正确的列?你的 SQL 写对了吗?

      当大部分活动都是只读的时,MyISAM 应该没问题。 MyISAM 还为您提供全文搜索,这是您在这种情况下可能需要的。 innoDB 没有全文搜索。

      【讨论】:

        【解决方案3】:

        切换表类型不会加速任何搜索。 InnoDB 只会在您遇到锁定问题时提供帮助。由于博客数据变化不大,因此您不太可能遇到锁定问题。 听起来问题出在全文搜索上。我会寻找一个插件来添加全文索引并使用该索引进行搜索。

        【讨论】:

        • 是的,我会同意的。有一个Sphinx plugin for WordPress 专门用于在需要搜索的大型网站上使用备受推崇的 Sphinx 引擎来帮助解决这个问题。当然,您需要安装 Sphinx,但如果它是您自己的 VPS,这应该不是问题。 CentOS 应该有一个软件包。
        猜你喜欢
        • 2017-10-30
        • 2011-05-14
        • 2012-09-16
        • 2011-04-17
        • 2011-09-08
        • 1970-01-01
        • 2016-06-14
        • 2011-09-21
        • 2013-11-10
        相关资源
        最近更新 更多