我们正在处理SQL Server数据库中的大数据,
现在执行包需要数小时
是否有任何方法/技术可以优化包的执行时间
我了解SSIS并行性
还有其他最好的方法吗?
编辑:
我们正在处理超过200万份的记录
SQL server数据库是数据源和目的地(在同一服务器中),我使用了诸如派生列、条件拆分、多播、数据转换、查找、OLEDB命令、OLEDB目的地、OLEDB源、合并、合并-联接、排序器、聚合转换等转换。
优化SSIS:的一些好例子
-
SSIS优化1
-
SSIS优化2
-
SSIS优化3
-
SSIS优化4
看看任何需要对数据进行排序的任务,这些任务通常会减慢速度。例如,不要使用合并联接,而是使用带有联接的查询数据源。
关于在SSIS中使用不同类型转换的含义的一篇非常好的文章:SSIS 中的非阻塞、半阻塞和全阻塞组件
基本上,如果您在包中使用排序或聚合,那么您将完全停止这些组件,直到每一行都被它们消耗掉,然后再将任何行传递给下一个组件。只有在数据流中没有其他选择的情况下才能使用这些选项。
像Merge和MergeJoin这样的半阻塞组件为正在通过的行创建一个新的缓冲区,因此在内存中创建缓冲区时会产生开销。在代码中谨慎使用此选项。
非阻塞将允许您最大限度地提高的吞吐量
避免半阻塞组件。
将SQL任务组件用于合并、排序、聚合功能
在OLE DB目标中为"每批行"one_answers"提交大小"设置10000。
在OLE DB目标中设置数据访问模式(表或视图快速加载)。