【问题标题】:Performance Analysis in SSISSSIS 中的性能分析
【发布时间】:2018-01-30 10:35:40
【问题描述】:

在 SSIS 包中,我有一个从 XML 源获取内容并通过 OLEDB 目标将数据加载到 SQLServer 表的数据流。

来源:XML 来源; 目标:OLEDB 目标。(Sqlserver DB)。

  1. 在 Sqlserver DB 中,目标表 (table1) 有 150 列,所有这些列都是 nvarchar(max) 类型。
  2. 在 SSIS 包 (p1.DTSX) 中,所有 XML 列的类型都是 DT_NTEXT。
  3. 在 SSIS 包 (p2.DTSX) 中,所有 XML 列都是 DT_WSTR 类型,长度设置为 3000。

使用此设置,当我执行输入 XML 记录计数为 2000 的作业时,p1.DTSX 在 30 秒时执行,而 p2.DTSX 在 45 秒时执行。

但是使用相同的设置,当我执行输入 XML 记录计数为 6000 的作业时,p1.DTSX 会在 1 分 20 秒内执行,而 p2.DTSX 的执行速度比 p1 快(即 50 秒)。

当记录数增加时,请解释一下这个争议

【问题讨论】:

    标签: sql-server ssis ssis-2012


    【解决方案1】:

    SSIS 处理默认缓冲区中的数据(转到数据流任务的属性,我们可以默认缓冲区最大行数/大小)。

    在 p1.DTSX 文件中,当使用较大的输入文件执行时,所有列都为 DT_NTEXT(MAX),内存缓冲区已填满,并使用临时日志文件 (BLOBTEMPStorage) 路径处理数据,因此导致缓慢。

    在 p2.DTSX 中,它没有引起任何问题,因为它处理了默认缓冲区中的所有内容,因为我们将列大小限制为 3000。

    【讨论】:

      猜你喜欢
      • 2014-07-14
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 2016-12-13
      • 2019-08-16
      相关资源
      最近更新 更多