当我的数据库最初创建时,它全部创建为 MyISAM(无特殊原因)- 随着时间的推移,随着新表的添加,它们都变成了 InnoDB,因为这似乎是 PHPMyAdmin 的默认值。
据我所知,它从未引起任何问题,但我确实需要开始考虑性能优化,尤其是当应用程序和数据库变得更加繁忙时,所以想将它们全部更改为一种类型并选择了 InnoDB - 我很高兴如何进行更改等,但我的问题是这对前端应用程序有什么影响(如果有的话)?该应用程序是一个自定义编码的 PHP 应用程序,基本上只是执行正常的 CRUD 操作,因此没有什么特别或不寻常的。
迁移后我应该注意什么?是否有任何可能因此停止工作或需要在应用程序中更改的内容?我很欣赏 InnoDB 需要定制,尤其是为了获得最佳性能,我很乐意对此进行研究,但只想先将它们全部更改,运行几天,然后再进行下一件事。
谢谢
最佳答案
与任何此类架构更改一样,确定它如何影响您的应用程序的唯一方法是对其进行测试。也就是说,在测试机器上,不用于您的生产网站。
从 MyISAM 切换到 InnoDB 的注意事项很少。您当然应该针对 InnoDB 进行调优。例如,参见我的演示文稿 http://www.slideshare.net/billkarwin/mysql-55-guide-to-innodb-status获取一些提示。
还请记住,如果您为 MyISAM key_buffer_size 配置变量分配了大量 RAM,那么如果您将所有内容都切换到 InnoDB,将不再需要它。我审计了很多网站,这些网站仍然有 4GB 以上的空间分配给这个不再使用的缓冲区。
至于你需要在你的应用程序中做任何改变,不,不应该有任何需要。除了少数特殊情况外,InnoDB 支持与 MyISAM 相同的 SQL 数据类型和查询语义。
例如,MyISAM 支持复合主键,其中 auto-inc 列位于第二位。 InnoDB 要求 auto-inc 列是 PK 中的第一列。
关于mysql - 将表迁移到 InnoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14446481/