Mysql 将表迁移到InnoDB

Mysql 将表迁移到InnoDB,mysql,innodb,Mysql,Innodb,最初创建我的数据库时,它都是作为MyISAM创建的(没有特殊原因)——随着时间的推移,随着新表的添加,它们都是InnoDB,因为这似乎是PHPMyAdmin的默认设置 它从来没有引起我所意识到的任何问题,但我真的需要开始考虑性能优化,尤其是当应用程序和数据库变得越来越繁忙时,因此希望将它们全部更改为一种类型,并选择InnoDB-我很高兴如何进行更改等,但我的问题是,如果有,这可能对前端应用程序有什么影响?该应用程序是一个定制编码的PHP应用程序,基本上只是执行普通的CRUD操作,因此没有什么特殊

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

它从来没有引起我所意识到的任何问题,但我真的需要开始考虑性能优化,尤其是当应用程序和数据库变得越来越繁忙时,因此希望将它们全部更改为一种类型,并选择InnoDB-我很高兴如何进行更改等,但我的问题是,如果有,这可能对前端应用程序有什么影响?该应用程序是一个定制编码的PHP应用程序,基本上只是执行普通的CRUD操作,因此没有什么特殊或异常

迁移后我应该注意什么?是否有任何可能停止工作或需要更改应用程序的内容?我很欣赏InnoDB需要定制,尤其是为了获得最佳性能,我很乐意对此进行研究,但我只想先将它们全部更改,运行几天,然后再进行下一步


谢谢

与任何此类体系结构更改一样,确保其对应用程序产生影响的唯一方法是对其进行测试。也就是说,在测试机器上,而不是在生产网站上

从MyISAM切换到InnoDB的注意事项很少。当然,你应该为InnoDB调音。有关一些提示,请参见我的演示文稿示例

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

至于您需要在应用程序中进行的任何更改,不,不应该有任何需要。InnoDB支持与MyISAM相同的SQL数据类型和查询语义,只有少数例外

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