1

当我的数据库最初创建时,它都是作为 MyISAM 创建的(没有特别的原因)——随着时间的推移,随着新表的添加,它们都是 InnoDB,因为这似乎是 PHPMyAdmin 的默认值。

它从来没有引起任何我知道的问题,但我真的需要开始考虑性能优化,尤其是当应用程序和数据库变得更加繁忙时,所以想将它们全部更改为一种类型并选择了 InnoDB - 我很高兴如何进行更改等,但我的问题是这可能对前端应用程序产生什么影响(如果有的话)?该应用程序是一个自定义编码的 PHP 应用程序,基本上只是执行正常的 CRUD 操作,所以没有什么特别或不寻常的。

迁移后我应该注意什么,是否有任何可能停止工作或需要在应用程序中进行更改?我很欣赏 InnoDB 需要定制,特别是为了获得最佳性能,并且很高兴研究这一点,但我只想先将它们全部更改,运行几天,然后再进行下一步。

谢谢

4

1 回答 1

2

与任何此类架构更改一样,确定它如何影响您的应用程序的唯一方法是对其进行测试。也就是说,在测试机器上,不适用于您的生产网站。

从 MyISAM 切换到 InnoDB 的注意事项很少。当然,您应该针对 InnoDB 进行调整。例如,请参阅我的演示文稿http://www.slideshare.net/billkarwin/mysql-55-guide-to-innodb-status以获取一些提示。

还要记住,如果您为 MyISAM key_buffer_size 配置变量分配了大量 RAM,如果您将所有内容都切换到 InnoDB,则不再需要这些 RAM。我已经审核了相当多的站点,这些站点仍然有 4GB+ 分配给这个不再使用的缓冲区。

至于您需要在应用程序中进行的任何更改,不,不应该有任何需要。InnoDB 支持与 MyISAM 相同的 SQL 数据类型和查询语义,除了一些特殊情况。

例如,MyISAM 支持 auto-inc 列在第二位的复合主键。InnoDB 要求 auto-inc 列是 PK 中的第一列。

于 2013-01-21T20:28:05.233 回答