首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将MySQL数据库的存储引擎从InnoDB转换为MyISAM (特定于Drupal7)的结果是什么?

将MySQL数据库的存储引擎从InnoDB转换为MyISAM (特定于Drupal7)的结果是什么?
EN

Stack Overflow用户
提问于 2013-01-29 18:36:08
回答 2查看 1K关注 0票数 1

我正在将一个中等规模(200k+用户)的Drupal 6 CMS升级到Drupal7。数据迁移将使用Migrate Module来处理。在DrupalV6之前,MyISAM是Drupal数据库的默认MySQL存储引擎。从DrupalVersion7开始,推荐使用InnoDB。因此,我开发的迁移类必须将数据从旧的D6 MyISAM DB迁移到新的D7 InnoDB DB。

当我运行迁移脚本时,我遇到了严重的性能问题:在一个“大型”Amazon Web Services服务器实例上迁移200k+用户配置文件将需要20多个小时,而该实例实际上已经为此进行了优化。这样的性能问题在使用迁移模块的迁移中并不少见,正如我从阅读该模块的问题跟踪器中了解到的那样。但是,我找到了一个解决方案,通过将D7 DB从InnoDB转换为MyISAM,可以将性能提高十倍。

现在的问题是:一旦用户再次使用D7 DB,我就必须使用InnoDB存储引擎运行它,所以我想知道,如果在迁移过程中将存储引擎设置为MyISAM,然后再返回到InnoDB,是否会对DB造成任何损害?

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-30 18:11:43

如果你看到InnoDB和MyISAM之间有很大的性能差异,很可能是因为InnoDB提供了事务保证。在迁移期间将innodb_flush_log_at_trx_commit变量设置为0应该允许您在迁移时获得非常好的性能,然后可以在迁移完成后将其设置回1

动态更改是安全的;但是,您应该注意到,如果服务器在设置为0时崩溃,您可能会丢失一些已提交的事务(但对于您的迁移,我猜警告是可以的)。

票数 4
EN

Stack Overflow用户

发布于 2013-08-15 03:19:31

您还可以将sync_binlog变量更改为0,也可以将速度提高到20%,在迁移后,您可以将其设置为1。

但是,如果在这两个过程之间出现了一些断电,那么您可能会丢失一些数据。但我认为你只是在迁移数据,这样就不会花那么多时间,而且停电的可能性也很低。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14580919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档