微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SSIS中的并行处理

如何解决SSIS中的并行处理

我在SSIS中有以下情形。有两个软件包,Outer.dtsx和Inner.dtsx。内部工作包在工作流的外部程序包中被调用。为了提高性能(工作量繁重),我添加一个序列容器,而不是只运行一个内部程序包,而是管理了该容器中的多个程序包,以便运行多个内部程序包实例(准确地说是10个)在平行下。它只是内部软件包的一个版本,但是被多次调用

此方案与拥有多个Inner版本(Inner_1,Inner_2,......,Inner_10)并在序列容器中再次运行它们有何不同?与一个版本的多次调用相比,拥有多个具有相同定义的软件包是否可以提高性能?哪种方案更有效并具有最佳性能

解决方法

从SSIS包的定义开始-它是以XML格式编写并由SSIS引擎执行的任务和转换的定义。 SSIS引擎可以同时执行同一包的多个实例。
实践中-执行以下实验。创建了一个虚拟包,该虚拟包使用文件名和表名- InnerPkg 的参数从CSV文件加载到MSSQL DB表。然后创建一个副本- InnerPkg1 。还创建了源文件和目标SQL表的两个副本。
请注意!!! 我创建了不同的源和目标,以避免资源锁定。

  • OuterPkg_Parallel 调用 InnerPkg 的两个实例,并在执行包任务处传递osurce文件名和目标表名的不同参数。
  • OuterPkg_Copies 使用适当的参数调用 InnerPkg InnerPkg1

结果(平均5次运行):

  • OuterPkg_Parallel -12,72秒
  • OuterPkg_Copies -12,77秒

据我所知,差异可以忽略不计。
这些测试是在MS SQL-SSIS 2016版,操作系统-Windows Server 2016上进行的。

底线-使用单包调用,因为它没有明显的性能损失,并且极大简化了支持。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。