如何提高在SSIS中向表中插入数据的性能

时间:2012-04-05 02:11:03

标签: ssis

我有一个包含 3 Lakh(300,000)记录的文本文件,包含7列。我将数据插入到临时表中,然后执行业务逻辑以将数据从那里插入到多个表中。

该文件如下所示:

01|000001111|27/04/2011|12/01/2012|ISDF|AB|1      
02|000002222|09/01/2010|29/01/2010|CfGH|CV|1      
03|000003333|19/07/2005|09/07/2007|TBRF|CC|1 

临时表名为Stagetable

我使用平面文件源和OLEDB目标,将数据插入临时表需要7个多小时。我需要提高性能。

我第一次使用SSIS包。

关于如何提高性能的任何建议都会很棒。

由于 王子

2 个答案:

答案 0 :(得分:0)

以下内容应该有所帮助;

- 在处理之前将文件移动到目标附近(即在同一个盒子上)以避免网络延迟

- 从SQL Server中部署并运行您的包,而不是Visual Studio

- 使用SQL Server目标,而不是OLE DB作为目标,以便更快地加载

- 关闭对目标组件的约束检查

- 检查目标表在加载时没有发生昂贵的触发器

- 如果您不需要执行任何转换,请使用批量插入任务

答案 1 :(得分:0)

3 lacs只有300000而且字段/行看起来也不是特别宽。这是导致任何问题的非常小的数字。

尝试找出源头或目的地的瓶颈在哪里?如果source是瓶颈,您可以拆分文件并将它们分段到单独但相同的临时表(例如stg_1,stg_2等)中,然后并行加载它们。

如果目标是瓶颈,您可以使用Balanced数据分发器,并将它们放入不同的临时表中。

同样,所有这些似乎只是300K行的过度杀伤力。

确保登台表上没有任何索引。我们很乐意听取您的所有尝试,有效的方法以及您的解决方法。