The*_*ebo 6 ssis balanced-data-distributor
根据附件,我们在数据转换中设置了一个平衡数据分配器,覆盖约200万行.脚本任务是相同的 - 每个脚本都打开一个与oracle的连接,然后首先执行删除操作然后执行插入操作.(这不相关,但是由于Ole DB命令和Oracle的Microsoft Ole DB提供程序的参数问题,它已经这样做了...)

我遇到的问题是无论我的缓冲区有多大或我配置了多少并发执行,BDD一次不会执行超过五个并发进程.
我已经在一个更大的缓冲区中撤回了数十万行,它只是分为5种方式.我在多台机器上尝试了这一点 - 目前的镜头来自16核心服务器,在程序包上配置了-1个并发执行 - 无论如何,它始终是5个并行作业.
5优于1,但插入/更新250万行,5次并发执行时每秒15行并不比每秒2-3行有1次并发执行好多少.
我可以强制BDD使用更多路径,如果是这样,怎么办?
小智 5
简短回答:
是BDD可以使用五个以上的路径.你不应该做任何特别强迫它,根据定义它应该自动为你做.那为什么它不使用超过5个路径?因为您的源生成的数据比目标可以消耗的速度快,导致背压.要解决此问题,您需要调整目标组件.
答案很长:
从理论上讲,"BDD采用输入数据并将其与其输出的比例相等,但其中有很多." 在您的设置中,有10个输出.因此,输入数据应该同时平均分配给所有10个输出,你应该看到10个路径同时执行 - 理论上也是如此.
但是BDD的另一个概念是"不是路由单个行,而是BDD在数据缓冲区上运行".这意味着数据流引擎启动一个缓冲区,用尽可能多的行填充它,并将该缓冲区移动到下一个组件(在您的情况下为脚本目标).如您所见,每个缓冲区使用的行数相同.如果启动了其他缓冲区,您将看到更多路径被使用.由于称为背压的机制,SSIS无法使用额外的缓冲区和最终的额外路径; 当源生成数据的速度快于目标可以使用数据时,就会发生这种情况.如果发生这种情况,源数据将耗尽所有内存,并且SSIS将没有任何内存用于转换和目标组件.因此,为了避免它,SSIS限制了活动缓冲区的数量.
PS:引号内的文字来自本文
| 归档时间: |
|
| 查看次数: |
3227 次 |
| 最近记录: |