gpt4 book ai didi

SSIS 平衡数据分发器 - 增加操作次数?

转载 作者:行者123 更新时间:2023-12-04 14:29:03 26 4
gpt4 key购买 nike

根据附件,我们在覆盖大约 200 万行的数据转换中设置了一个平衡数据分发器。脚本任务是相同的——每个任务都打开一个与 oracle 的连接,并先执行删除,然后执行插入。 (这无关紧要,但由于 Ole DB 命令和 Microsoft Ole DB 提供程序的 Oracle 参数问题而这样做...)

enter image description here

我遇到的问题是无论我的缓冲区有多大或配置了多少并发执行,BDD 一次都不会执行超过五个并发进程。

我在一个更大的缓冲区中拉回了数十万行,它只是分成了 5 种方式。我已经在多台机器上尝试过这个——当前的镜头来自一个 16 核服务器,在包上配置了 -1 个并发执行——无论如何,它总是 5 个并行作业。

5 比 1 好,但是有 250 万行要插入/更新,5 次并发执行时每秒 15 行并不比 1 次并发执行时每秒 2-3 行好多少。

我是否可以强制 BDD 使用更多路径,如果可以,如何使用?

最佳答案

简短的回答:

是的,BDD 可以使用五个以上的路径。你不应该做任何特别的事情来强制它,根据定义它应该自动为你做。那为什么不使用超过 5 条路径呢?因为您的源生成数据的速度比您的目的地消耗的速度快,从而导致背压。要解决它,您必须调整目标组件。

长答案:

从理论上讲,“BDD 获取输入数据并将其路由到与其输出相等的比例,无论有多少。”在您的设置中,有 10 个输出。因此,输入数据应该同时平均分配到所有 10 个输出,并且您应该看到 10 个路径同时执行 - 理论上也是如此。

但是 BDD 的另一个概念是“BDD 对数据的缓冲区进行操作,而不是路由单个行”。这意味着数据流引擎启动一个缓冲区,用尽可能多的行填充它,然后将该缓冲区移动到下一个组件(在您的情况下是脚本目标)。如您所见,使用了 5 个缓冲区,每个缓冲区具有相同的行数。如果启动了额外的缓冲区,您会看到更多的路径被使用。由于一种称为背压的机制,SSIS 无法使用额外的缓冲区,最终无法使用额外的路径;当源生成数据的速度快于目标消耗它的速度时,就会发生这种情况。如果发生这种情况,所有内存都将被源数据用完,并且 SSIS 将没有任何内存可用于转换和目标组件。所以为了避免这种情况,SSIS 限制了事件缓冲区的数量。它设置为 5(无法更改),这正是您看到的线程数。

PS:引号内的文字来自this article

关于SSIS 平衡数据分发器 - 增加操作次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19382397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com