我正在升级中等规模(超过 20 万用户)Drupal 6 CMS 到 Drupal 7。将使用 Migrate Module 处理数据迁移。 .在 Drupal 版本 6 之前,MyISAM 是 Drupal 数据库的默认 MySQL 存储引擎。从 Drupal 版本 7 开始,推荐使用 InnoDB。据此,我开发的迁移类必须将数据从旧的 D6 MyISAM DB 迁移到新的 D7 InnoDB DB。
我在运行迁移脚本时遇到了严重的性能问题:在“大型”Amazon Web Services 服务器实例上迁移 200k+ 用户配置文件需要 20 多个小时,该实例实际上已为此目的进行了优化。这种性能问题对于使用所述迁移模块的迁移并不少见,正如我从阅读该模块的问题跟踪器中了解到的那样。但是,我找到了一种解决方案,通过将 D7 数据库从 InnoDB 转换为 MyISAM,将性能提高十倍。
现在的问题是:一旦用户再次使用它,我将不得不使用 InnoDB 存储引擎运行 D7 数据库,我想知道如果我设置存储引擎是否会对数据库造成任何损害在迁移过程中转到 MyISAM,然后返回到 InnoDB?
感谢您的帮助。
最佳答案
如果您看到 InnoDB 和 MyISAM 之间存在非常大的性能差异,很可能是因为 InnoDB 正在提供事务保证。在迁移期间将 innodb_flush_log_at_trx_commit
变量设置为 0
应该可以让您在迁移时获得非常好的性能,然后您可以将其设置回 1
迁移完成后。
即时更改是安全的;但是,您应该注意,如果服务器在设置为 0
时崩溃,您可能会丢失一些已提交的事务(但对于您的迁移,我认为警告是可以的)。
关于mysql - 将 MySQL 数据库的存储引擎从 InnoDB 转换为 MyISAM 并返回(特定于 Drupal 7)会产生什么后果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14580919/