-1

默认情况下,SSIS 包是线程安全的吗?

它们可以并行调用吗?(一般来说)

4

2 回答 2

3

如果您将它们视为与数据库的连接,则它们尽可能地是线程安全的。我认为更关键的问题是当包裹碰到桌子时桌子会被锁定。

SSIS 包只能做它被告知要做的事情。如果您正在转换一个表,它可能会在操作生效时被锁定。如果它们不首先超时,这将迫使作业或多或少地串行。如果您正在处理数据,您可能会摆脱并行运行的东西。

所以你的问题的答案是“是的,但是”。底层数据访问将决定事情是否可以并行运行。

于 2009-01-05T16:13:46.823 回答
0

是的,SSIS 包是线程安全的。您还可以通过多种方式控制并发:

  • 可以将单个包设置为运行有限数量的线程。包属性“MaxConcurrentExecutables”控制它。

  • 可以使用依赖项设置顺序运行的包。您可以在包内或从调用子包的主包中执行此操作。

  • MaxConcurrentThreads 属性可以在 DTExec.exe 的命令行上被覆盖

如果您需要减少锁定和争用问题,您可以设置事务隔离属性或编写带有 nolock 提示的数据库查询。显然,您需要密切关注任何潜在的并发或脏读问题。

您可以在运行包的数据库上使用分析器或 perfmon 来查找锁定问题的迹象。无需对数据库调优问题进行冗长的讨论,这本身就是一个相当大的话题,在闩锁和锁定等待统计数据中寻找大数字作为可能的瓶颈的迹象。

于 2009-01-05T16:20:11.647 回答