循环遍历Rails项目中的一堆数据库更改

时间:2010-02-08 19:06:33

标签: ruby-on-rails performance

我有一个Import函数,它以xml格式获取大量数据并将其粘贴到我的数据库中。问题是,这取决于进程可能需要相当长时间的数据量。我在服务器日志中看到,有大量的sql语句执行后会保存所有数据。

如何改善该案例的表现?是否可以仅在内存中执行所有操作并仅使用一个语句将其保存回来?

更新

回应HLGEM的回答:

我通过批量插入方式阅读,但似乎对我来说不太实用,因为我在数据之间有很多关系......为了在表中放置100个数据我必须设置关系那些到其他表...

有办法解决这个问题吗?我可以做封装插页吗?

2 个答案:

答案 0 :(得分:0)

在对数据库执行操作时,永远不要逐行工作,这就是导致问题的原因。某种类型的批量插入将比逐行处理快得多。不知道您正在使用它的数据库很难更具体地确定如何执行此操作。你甚至不应该考虑逐行处理,而应该考虑如何影响一组数据。

答案 1 :(得分:0)

嗯,这取决于:)

  • 如果XML数据的处理(导入前)很昂贵,您可以运行一次处理,导入到数据库,然后从数据库中导出纯SQL。然后,未来的导入可以使用此SQL进行批量导入,从而无需进行XML处理。

  • 如果数据导入本身很昂贵,那么您可能希望特定于您的数据库,以便弄清楚如何加快它。如果您使用的是MySQL,可以查看:https://serverfault.com/questions/37769/fast-bulk-import-of-a-large-dataset-into-mysql