SSIS从异构源中对大数据进行排序 - 替代方案

时间:2017-07-05 23:17:51

标签: sorting ssis etl ssis-2012

我正在寻找在SSIS上排序约200万条记录的替代方案。

在应用多次转换后,来自异构源(SQL,Oracle,DB2)的数据,有一个Union All来组合数据,然后需要按三个字段排序。

这是因为在我们发送给外部供应商之前,数据需要按某些字段进行排序

这些是我已经尝试过的解决方案:

  • 缓冲区大小(100 MB)和最大行调整(50K行)
  • 在每个来源进行应用排序(仅为了我的想法!)
  • 将验证外部元数据属性设置为False(对于Sort Trans)
  • 尝试过脚本任务(C#排序)

这些都没有显着提高性能。

还有其他选择吗?

更新: 这是三个不同字段的字符串排序,属于三个不同的DB表(SQL,Oracle,DB2)。在数据集合并之前,我无法排序。

  • 尝试将输出加载到单个表并使用Order by和适当的索引 - 这会产生意外结果,因为SQL Order by的行为与Sort Transformation Here is the explanation不同

1 个答案:

答案 0 :(得分:0)

使用MERGE转换代替UNION ALL

不是首先使用UNION ALL组合数据集,然后对生成的大型组合数据集进行排序,而是首先对每个较小的集合进行排序,然后使用MERGE转换。 MERGE转换的结果已经排序。