【问题标题】:sql performance degrading - loading 60,000 xml files - ssis - xml sourcesql 性能下降 - 加载 60,000 个 xml 文件 - ssis - xml 源
【发布时间】:2016-08-22 10:12:06
【问题描述】:

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

有什么方法可以检查性能并以与初始文件相同的速度加载文件。

我也尝试过在 c# 中进行批量复制。但即使在那里也存在问题。他们有什么方法可以提高我的表现吗?

【问题讨论】:

  • 您可以直接从您的 SQL Server 访问 XML 文件吗?使用纯 T-SQL 加载它们可能更容易(也更快)...

标签: c# sql-server xml performance ssis


【解决方案1】:

您的部分代码将使我们更容易为您提供提示和想法!

我认为这个问题与内存有关。你是把所有的文件都读到内存里再放到sql数据库里吗? 检查任务管理器!如果内存使用量不断增长,则内存使用量存在潜在问题。

我不知道这些文件是如何存储或命名的,但如果可以的话 - 为什么不一次使用 1-5000 个文件,移动它们并获取下一个文件?

【讨论】:

  • 我有一个 ForEach 容器,它可以提取所有文件,然后将一个文件一个文件加载到我的目标表中。 Foreach 有一个数据流任务,其中有 XML 源和 oledb 目标。
【解决方案2】:

尝试使用多个 DFT 而不是单个 DFT。将每个限制在 5k/10k 左右。这有望缩短时间范围。

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

【讨论】:

    【解决方案3】:

    1.执行SQL任务(加载前删除索引)

    2.for循环(xml文件加载的多重控制流)

    3.执行SQL任务(重新创建索引)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 1970-01-01
      • 2021-09-19
      相关资源
      最近更新 更多