Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails项目中循环进行一系列DB更改_Ruby On Rails_Performance - Fatal编程技术网

Ruby on rails 在Rails项目中循环进行一系列DB更改

Ruby on rails 在Rails项目中循环进行一系列DB更改,ruby-on-rails,performance,Ruby On Rails,Performance,我有一个导入函数,它获取一组xml格式的数据并将其粘贴到我的数据库中。问题是,根据数据量的不同,处理可能需要相当长的时间。我在服务器日志中看到,执行了大量的sql语句,它们确实保存了所有数据 我如何提高这种情况下的性能?是否可以只在内存中执行所有操作,并仅用一条语句将它们保存回内存 更新: 针对HLGEM的回答: 我通读了大量插入的方式,但它似乎不是很实用,因为我有很多数据之间的关系。。。为了在一个表中放入100个数据,我必须设置这些数据与其他表的关系 有办法解决这个问题吗?我可以进行封装插入吗

我有一个导入函数,它获取一组xml格式的数据并将其粘贴到我的数据库中。问题是,根据数据量的不同,处理可能需要相当长的时间。我在服务器日志中看到,执行了大量的sql语句,它们确实保存了所有数据

我如何提高这种情况下的性能?是否可以只在内存中执行所有操作,并仅用一条语句将它们保存回内存

更新: 针对HLGEM的回答:

我通读了大量插入的方式,但它似乎不是很实用,因为我有很多数据之间的关系。。。为了在一个表中放入100个数据,我必须设置这些数据与其他表的关系


有办法解决这个问题吗?我可以进行封装插入吗?

在对数据库执行操作时,不要逐行操作,这就是导致问题的原因。某种类型的大容量插入将比逐行插入过程快得多。由于不知道您正在使用的数据库,很难更具体地说明具体的操作方法。您甚至不应该考虑逐行处理,而应该考虑如何影响一组数据。

好吧,这取决于:)

  • 如果XML数据的处理(导入前)成本很高,可以运行一次处理,导入到数据库,然后从数据库导出普通SQL。然后,将来的导入可以使用此SQL进行批量导入,从而避免了XML处理的需要

  • 如果数据导入本身很昂贵,那么您可能需要针对您的数据库,以找出如何加快数据导入的速度。如果您使用的是MySQL,您可以查看:


嗨,HLGEM,谢谢你的回复我也这么认为,我发现了一些关于批量插入的信息,我会先通读一遍!感谢MarkusMarkus,您表示担心(在您的问题中,如上所述),如果您的数据之间存在关系,您可能无法进行批量插入。别担心,那不是问题。只需使用已经指定的主键进行批量插入。然后可以使用外键构建关系。感谢David的评论。到现在为止,我只是让糟糕的表现和其他话题有关。但你现在给了我希望,那就是我可以提高表现!我会试试的。我刚刚更新了我的回复。下面的答案对你有帮助吗?