我有一个Import函数,它以xml格式获取大量数据并将其粘贴到我的数据库中。问题是,这取决于进程可能需要相当长时间的数据量。我在服务器日志中看到,有大量的sql语句执行后会保存所有数据。
如何改善该案例的表现?是否可以仅在内存中执行所有操作并仅使用一个语句将其保存回来?
回应HLGEM的回答:
我通过批量插入方式阅读,但似乎对我来说不太实用,因为我在数据之间有很多关系......为了在表中放置100个数据我必须设置关系那些到其他表...
有办法解决这个问题吗?我可以做封装插页吗?
答案 0 :(得分:0)
在对数据库执行操作时,永远不要逐行工作,这就是导致问题的原因。某种类型的批量插入将比逐行处理快得多。不知道您正在使用它的数据库很难更具体地确定如何执行此操作。你甚至不应该考虑逐行处理,而应该考虑如何影响一组数据。
答案 1 :(得分:0)
嗯,这取决于:)
如果XML数据的处理(导入前)很昂贵,您可以运行一次处理,导入到数据库,然后从数据库中导出纯SQL。然后,未来的导入可以使用此SQL进行批量导入,从而无需进行XML处理。
如果数据导入本身很昂贵,那么您可能希望特定于您的数据库,以便弄清楚如何加快它。如果您使用的是MySQL,可以查看:https://serverfault.com/questions/37769/fast-bulk-import-of-a-large-dataset-into-mysql