首页 文章

优化SSIS 2008包

提问于
浏览
2

我们正在处理SQL Server数据库中的大数据,
现在包执行需要几个小时才能执行 .
是否有任何方法/技术来优化包的执行时间?
我知道SSIS Parallelism .
还有其他最好的方法吗?

Edit:
我们正在处理超过2亿的记录 .
SQL服务器数据库是数据源和目标(在同一服务器中),我使用转换,如衍生列,条件拆分,多播,数据转换,查找,OLEDB命令,OLEDB目标,OLEDB源,合并,合并加入,排序,聚合转换 .

4 回答

  • 2
  • 0

    查看需要您对数据进行排序的任何任务,这些通常是减慢速度的任务 . 例如,不使用合并连接,而是使用带有连接的查询的数据源 .

  • 1

    关于在SSIS中使用不同类型转换的含义的非常好的文章:Non-Blocking, Semi-Blocking and Fully-Blocking components in SSIS

    基本上,如果在包中使用sort或aggregate,那么在将任何行传递给下一个组件之前,您将对这些组件进行完全停止,直到每行都使用它们为止 . 仅在数据流中没有其他选择时才使用这些 .

    像Merge和Merge Join这样的半阻塞组件为要传递的行创建一个新的缓冲区,因此在内存中创建缓冲区时会产生开销 . 在代码中谨慎使用它 .

    非阻塞将允许您最大化您的吞吐量

  • 1

    避免半阻塞组件 .

    将SQL任务组件用于合并,排序器,聚合函数

    为每个行设置10000和在OLE DB目标中提交大小 .

    在OLE DB目标中设置数据访问模式(表或视图快速加载) .

相关问题