SSIS 中的并行处理
Parallel Processing in SSIS
我在 SSIS 中有以下场景。有两个包,Outer.dtsx 和 Inner.dtsx。内包在工作流中的外包内被调用。为了提高性能,由于工作量大,我添加了一个序列容器,而不是只有一个内包运行ning,我在容器内管理了多个包,所以有多个实例(准确地说是10个) ) 的内包装 运行ning 并行。只有一个版本的内包,却被多次调用
这种情况与拥有多个版本的 Inner(Inner_1、Inner_2、......、Inner_10)和 运行 它们有何不同又在序列容器内?与多次调用一个版本的包相比,具有相同定义的多个包是否会提高性能?哪种场景效率更高,性能最好?
来自 SSIS 包的定义 - 它是以 XML 格式编写并由 SSIS 引擎执行的任务和转换的定义。 SSIS 引擎可以同时执行同一个包的多个实例。
在实践中——进行了以下实验。创建了一个从 CSV 文件加载到 MSSQL DB table 的虚拟包,参数为文件名和 table 名称 - InnerPkg。然后创建了它的副本 - InnerPkg1。还创建了源文件和目标文件的两个副本 SQL Table.
请注意!!!我创建了不同的源和目标以避免资源锁定。
- OuterPkg_Parallel 调用 InnerPkg 的两个实例,传递 osurce 文件名和目标 tablename 的不同参数在 执行包任务。
- OuterPkg_Copies 使用适当的参数调用 InnerPkg 和 InnerPkg1。
结果(5 次运行的平均值):
- OuterPkg_Parallel - 12,72 秒
- OuterPkg_Copies - 12,77 秒
因此,根据我的理解,差异可以忽略不计。
测试是在 MS SQL - SSIS 2016 版,OS - Windows Server 2016.
上进行的
底线 - 使用单个包调用,因为它没有明显的性能损失并且大大 简化了支持。
我在 SSIS 中有以下场景。有两个包,Outer.dtsx 和 Inner.dtsx。内包在工作流中的外包内被调用。为了提高性能,由于工作量大,我添加了一个序列容器,而不是只有一个内包运行ning,我在容器内管理了多个包,所以有多个实例(准确地说是10个) ) 的内包装 运行ning 并行。只有一个版本的内包,却被多次调用
这种情况与拥有多个版本的 Inner(Inner_1、Inner_2、......、Inner_10)和 运行 它们有何不同又在序列容器内?与多次调用一个版本的包相比,具有相同定义的多个包是否会提高性能?哪种场景效率更高,性能最好?
来自 SSIS 包的定义 - 它是以 XML 格式编写并由 SSIS 引擎执行的任务和转换的定义。 SSIS 引擎可以同时执行同一个包的多个实例。
在实践中——进行了以下实验。创建了一个从 CSV 文件加载到 MSSQL DB table 的虚拟包,参数为文件名和 table 名称 - InnerPkg。然后创建了它的副本 - InnerPkg1。还创建了源文件和目标文件的两个副本 SQL Table.
请注意!!!我创建了不同的源和目标以避免资源锁定。
- OuterPkg_Parallel 调用 InnerPkg 的两个实例,传递 osurce 文件名和目标 tablename 的不同参数在 执行包任务。
- OuterPkg_Copies 使用适当的参数调用 InnerPkg 和 InnerPkg1。
结果(5 次运行的平均值):
- OuterPkg_Parallel - 12,72 秒
- OuterPkg_Copies - 12,77 秒
因此,根据我的理解,差异可以忽略不计。
测试是在 MS SQL - SSIS 2016 版,OS - Windows Server 2016.
底线 - 使用单个包调用,因为它没有明显的性能损失并且大大 简化了支持。