将表迁移到InnoDB

时间:2013-01-21 20:16:17

标签: mysql innodb

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

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

迁移后我应该注意什么?是否有任何可能停止工作或需要在应用程序中更改的结果?我很欣赏InnoDB需要定制,特别是为了获得最佳性能,我很乐意调查,但只是想让它们全部改变,运行几天,然后进入下一步。

由于

1 个答案:

答案 0 :(得分:2)

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

从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中的第一列。