2016-08-22 60 views
1

我有一个ssis数据流任务,它将xml数据加载到sql数据库中 - 超过60,000个xml文件。我的前几千个xml文件被加载到表格中的速度更快。但随着时间的推移,加载速度急剧降低。 第一个10k文件在10分钟左右被加载。接下来的10K需要25分钟,然后慢慢地表现下降。当我所有的60k +文件被加载时,大约需要4个小时。sql性能下降 - 加载60,000 xml文件 - ssis - xml源

是否有任何方法来检查性能并以与初始文件相同的速度加载文件。

我曾尝试在C#中批量复制。但这个问题也存在。他们是否有任何解决方法来改善我的表现?

+0

您可以直接从SQL Server获取XML文件吗?使用纯T-SQL可能会更容易(也更快)加载它们... – Shnugo

回答

0

部分代码会让我们更容易给你提示和想法!

我认为这个问题与内存有关。在将它放入sql数据库之前,您是否将所有文件读入内存? 检查任务管理器!如果内存使用量不断增长并且不断增长,那么内存使用情况可能会存在问题。

我不知道如何存储或命名文件,但如果你可以 - 为什么不能像1-5000一样工作,移动它们并采取下一步?

+0

我有一个ForEach容器,它将所有文件拉出来,然后将文件按文件加载到我的目标表中。 Foreach有一个数据流任务,其中有XML源和oledb目标。 –

0

试着用多个DFT来代替单个DFT。将每个限制在5k/10k左右。这将有希望带来较少的时间框架。

此外,时间的差异可能是由于表上的索引。删除索引。加载记录。加载完成后重新应用索引。在索引表上查询记录集很快。但是在索引表上执行插入操作,并且60k条记录是一个耗时的过程。