gpt4 book ai didi

ruby - Rails,如何迁移大量数据?

转载 作者:数据小太阳 更新时间:2023-10-29 06:33:34 26 4
gpt4 key购买 nike

我有一个运行旧版本 Spree(开源购物车)的 Rails 3 应用程序。我正在将它更新到最新版本。这需要我在数据库上运行大量迁移以与最新版本兼容。但是,应用程序当前的数据库大约为 300mb,要在我的本地计算机(mac os x 10.7、4gb ram、2.4GHz Core 2 Duo)上运行迁移需要三天以上的时间才能完成。

我能够使用 Amazon EC2 实例(高 I/O 按需实例,四倍超大)将这个时间减少到仅 16 小时。但是 16 小时仍然太长,因为我必须关闭网站才能执行此更新。

有没有人有任何其他建议来降低这个时间?或提高迁移性能的任何提示?

仅供引用:在 Amazon 实例上使用 Ruby 1.9.2 和 Ubuntu。

最佳答案

  • 事先删除索引然后再添加它们是个好主意。

  • 如前所述,将 .where(...).each 替换为 .find_each 并可能添加事务会有所帮助。

  • 替换.save!使用 .save(:validate => false),因为在迁移期间您不会从用户那里获得随机输入,您应该进行已知良好的更新,并且验证会占用大部分执行时间。或者使用 .update_attribute 也会跳过您只更新一个字段的验证。

  • 尽可能在循环中使用较少的 AR 对象。实例化和稍后的垃圾收集会占用 CPU 时间并使用更多内存。

关于ruby - Rails,如何迁移大量数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11588295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com