RetainSameConnection - 使用与否?

时间:2013-10-15 16:02:06

标签: ssis

是否存在RetainSameConnection应该为假的用例?

我不明白为什么默认情况下它是假的,我想知道这个设置是否确实有权存在。

2 个答案:

答案 0 :(得分:6)

如果您在程序包执行期间没有重复访问数据源,请将RetainSameConnection保留为false,以便可以销毁连接并在使用结束时将其返回到池中。

当您反复点击相同的数据源时,将RetainSameConnection设置为true。在设置会话变量(例如MySQL的SQL_BIG_SELECTS)或创建临时表以在包中使用时,您也需要这样做。

答案 1 :(得分:2)

两个原因: 1.连接很昂贵 2.并行是有效的 首先,一个神话让人失望:RetainSameConnection false不会导致连接在每个任务后关闭。 (也不是真的。)

在默认配置下,SSIS将打开与数据库相同数量的连接,因为它认为有必要发出命令。例如,您可能有两个不受优先级运算符约束的任务,在同一连接上的两个不同的表上运行。 SSIS可以决定打开两个连接实例,以便独立处理这两个命令。另一种情况是,您可能拥有一个数据流,其中Source组件和Destination组件定位到同一连接。 SSIS可能决定使用两个连接实例,一个用于Source,另一个用于Destination。同样 - SSIS的目的是使用单独的连接来提高数据吞吐量。

所以 - 将RetainSameConnection设置为false几乎总是很好。通常有一个很好的理由说明默认值是默认值。

RetainSameConnection的情况非常少: 1.您希望使用数据库控制的事务。如果SSIS选择打开多个连接来完成任务,那么您的SQL事务将无法覆盖所有这些连接。强制SSIS仅打开一个确保您的命令都在同一事务中登记。 你的数据库是“动力不足”的。或者在负载下,您希望减少SSIS包的影响。将SSIS限制为只有一个连接可以帮助解决这个问题。