mysql - 将表迁移到 InnoDB

标签 mysql innodb

当我的数据库最初创建时,它全部创建为 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/

相关文章:

php - 不能 ORDER BY 或 DESC 顺序 MySQLi

mysql - 为什么我不断收到 'Incorrect Syntax near ' Select'.期待 Set' 错误?

mysql - MySQL 中的 UPDATE ... WHERE 事务是否会锁定从子查询引用的其他表中的行?

mysql - 从 MySQL 数据库修复/恢复数据

mysql - 将数据从 myisam 复制到 innodb

mysql - 为什么MySQL发现CONCAT语句有错误?

mysql - 切换数据库中的记录

mysql - 在 mysql 和 golang 中构建动态查询

mysql - 我如何根据数据库结构查看 InnoDB 如何存储我的数据?

php - 我应该使用 MyISAM 还是 InnoDB(或其他)?