所以我有一个集中式CMS,其中有多个站点从一个DB运行。最近我们偶尔会收到一个我们之前看到的max_user_connections错误(在速度较慢的服务器上)。
现在主持人已经建议innodb的行锁定而不是myisam的表锁定可以解决这个问题。听起来可能就是这种情况,但我会增加连接会更安全。
我已经对innodb vs myisam进行了一些阅读,我不相信全文索引的丢失将是一个问题,但我不确定外键是什么。
所以我的问题是,这个在生产数据库上运行,有一个巨大的CMS和前端代码的各种实例,转换到innodb可能有任何重大问题吗?例如,具体哪种类型的查询将不再起作用?
答案 0 :(得分: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。一个提示:与不同的工具集联系以进行恢复,故障保护和备份
替代方案:您可能没有其他选择,只需通过切换到行级锁定机制或切换到完全不同的方式来解决锁定问题。
还可以选择不完全切换。您可以基于表配置存储引擎。因此,如果您确定发生锁定问题的表,则可以将此表简单地迁移到其他存储引擎。