gpt4 book ai didi

ruby-on-rails - Ruby on Rails 迁移非常慢

转载 作者:搜寻专家 更新时间:2023-10-30 22:22:15 25 4
gpt4 key购买 nike

我有 SQLite3 数据库,其中填充了一些大型数据集。我为此使用迁移。

3 个表将有以下记录数:Table_1 将有大约 10 条记录 Table_1 的每条记录将与 Table_2 中的约 100 条记录相关联 Table_2 的每条记录将与 Table_3 中的约 2000 条记录相关联

记录数约为 10*100*2000 = 2000000

这需要很长时间...事件,如果我用大约 20000 条记录填充我的数据库,大约需要 10 分钟。

此外,我还注意到,在执行迁移期间,ruby 解释器仅占用 CPU 时间的 5%,而 95% 的时间未使用 ...

如此纯粹的表现的原因是什么?

最佳答案

很简单,通过手动一次保存一个 AR 对象来插入大量记录将需要数年时间。

用于插入大量数据的速度和“清洁度”(即不是完全狡猾的 hack)之间的最佳折衷是 ar-extensions 的 ( http://github.com/zdennis/ar-extensions) 导入方法。它并不理想,但比我能找到的任何替代方案都要好,而且语法简洁,不需要您使用原始 sql(或任何接近的地方)。

示例语法:

items = Array.new
1.upto(200) do |n|
items << Item.new :some_field => n
end
Item.import items, :validate => false

至少在 mysql 中,这会将记录批处理到具有多组值的单个 INSERT 语句中。真他妈快。

关于ruby-on-rails - Ruby on Rails 迁移非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1960058/

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