我正在从XML到DB批量导入产品。我需要每天更新一次这些产品。
现在,我正在执行以下步骤:
但这种方法需要2个小时才能生成40,000个产品。
我不知道,如何改进它。有任何想法吗?谢谢!
答案 0 :(得分:0)
开始的好方法是找到延迟的位置(如果从磁盘读取文件,很可能是数据库查找)。
考虑操作的worker / producer模式,从输入文件中读取一个线程,并从队列中拉出几个线程。在这种情况下,您的工作单元是XML文件中的产品。工作人员倾向于数据库插入。
如果您还没有数据库,那么数据库可以从产品代码列上的索引获得加速。另外,考虑将任何项目批量插入到DB中,而不是单个记录插入。
答案 1 :(得分:0)
XML不是问题,它是查询的数量。 如果可能执行以下操作:
限制数据库的连接和查找。如果你正在使用 SQL Server,将整个XML传递给存储过程并进行处理 过程中的XML。
请勿更新,而是执行所有插入操作。之后清理旧数据 进口。在导入过程中使用事务来保持完整性。
不要在数据库中进行比较。首先从数据库中检索所有数据, 与您的XML进行比较(使用XPath),只更新所需的内容。
使用文本文件中的数据库上传机制(实际上与#2相同),然后根据需要清理旧数据。