我有一个包含 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包。
关于如何提高性能的任何建议都会很棒。
由于 王子
答案 0 :(得分:0)
以下内容应该有所帮助;
- 在处理之前将文件移动到目标附近(即在同一个盒子上)以避免网络延迟
- 从SQL Server中部署并运行您的包,而不是Visual Studio
- 使用SQL Server目标,而不是OLE DB作为目标,以便更快地加载
- 关闭对目标组件的约束检查
- 检查目标表在加载时没有发生昂贵的触发器
- 如果您不需要执行任何转换,请使用批量插入任务
答案 1 :(得分:0)
3 lacs只有300000而且字段/行看起来也不是特别宽。这是导致任何问题的非常小的数字。
尝试找出源头或目的地的瓶颈在哪里?如果source是瓶颈,您可以拆分文件并将它们分段到单独但相同的临时表(例如stg_1,stg_2等)中,然后并行加载它们。
如果目标是瓶颈,您可以使用Balanced数据分发器,并将它们放入不同的临时表中。
同样,所有这些似乎只是300K行的过度杀伤力。
确保登台表上没有任何索引。我们很乐意听取您的所有尝试,有效的方法以及您的解决方法。