SSIS 中的性能分析

Performance Analysis in SSIS

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

来源:XML来源; 目的地:OLEDB 目的地。(Sqlserver 数据库)。

  1. 在 Sqlserver 数据库中,目标 table (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 秒)。

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

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

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

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