【问题标题】:mysql max_user_connections, and innodb vs myisammysql max_user_connections 和 innodb vs myisam
【发布时间】:2012-03-01 19:54:09
【问题描述】:

所以我有一个集中式 CMS,其中多个站点从一个数据库运行。最近,我们偶尔会收到我们以前见过的 max_user_connections 错误(在慢得多的服务器上)。

现在主持人建议使用 innodb 的行锁定而不是 myisam 的表锁定可以解决这个问题。听起来可能是这样,但我会认为增加连接会是一个更安全的选择。

我已经对 innodb 与 myisam 进行了一些阅读,我认为丢失全文索引不会成为问题,但是我不确定外键。

所以我的问题是,在生产数据库上运行,具有巨大的 CMS 和各种前端代码实例,在转换为 innodb 时可能会出现任何重大问题吗?例如,具体哪种类型的查询将不再起作用?

【问题讨论】:

标签: mysql innodb myisam


【解决方案1】:

两点:

  • Increasing the connections - 在遇到此类“Stop-the-world”场景时,这不会解决您的问题。增加连接数只会为您提供更多并行连接,但遇到此类问题通常意味着对表的操作很频繁,并且在一次操作之间,一个或多个类似请求以阻塞状态运行。所以即使你大幅增加连接池也只是临时解决方案。

  • InnoDB 是一个完全不同的存储引擎。因此,您需要在不同的配置属性和备份方案上投入一些时间。从查询的角度来看,使用 innodb 而不是 myisam,您可能有更多选择。 Afaik 唯一不可能的是全文索引。在此处查看完整的优缺点列表:http://www.kavoir.com/2009/09/mysql-engines-innodb-vs-myisam-a-comparison-of-pros-and-cons.html。一个提示:联系用于恢复、故障保护和备份的不同工具集

替代方案:您可能别无选择,只能通过切换到行级锁定机制或切换到完全不同的机制来解决锁定问题。

还有不完全切换的选项。您可以基于表配置存储引擎。因此,如果您确定发生锁定问题的表,您可能只需将该表迁移到不同的存储引擎。

【讨论】:

    猜你喜欢
    • 2011-07-25
    • 2012-05-15
    • 2011-05-14
    • 2012-01-13
    • 2011-09-17
    • 1970-01-01
    • 2011-04-18
    • 2015-07-18
    • 1970-01-01
    相关资源
    最近更新 更多