如何提高SSIS中向表插入数据的性能
我有一个文本文件,包含7列300万(300000)记录。我将数据插入一个临时表,然后执行业务逻辑将数据插入多个表 该文件如下所示:如何提高SSIS中向表插入数据的性能,ssis,Ssis,我有一个文本文件,包含7列300万(300000)记录。我将数据插入一个临时表,然后执行业务逻辑将数据插入多个表 该文件如下所示: 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目标,
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包
任何关于我如何提高绩效的建议都会很好
谢谢
王子以下几点应该会有所帮助 -在处理之前,将文件移到靠近目标的位置(即在同一个框中),以避免网络延迟 -在SQL Server(而不是Visual Studio)中部署和运行包 -使用SQL Server目标,而不是OLE DB作为更快加载的目标 -关闭目标组件上的约束检查 -检查目标表在加载时是否没有昂贵的触发器
-如果不需要执行任何转换,请考虑使用批量插入任务。3 LAC仅为300000,并且字段/行看起来也不是特别宽。这是一个很小的数字,不会引起任何问题 试着找出瓶颈在哪里——在源头还是在目的地?如果源是瓶颈,您可以将文件拆分并将其暂存到单独但相同的暂存表中,如stg_1、stg_2等,然后并行加载它们 如果目标是瓶颈,您可以使用平衡数据分发器,并将它们放入不同的暂存表中 同样,对于30万行来说,所有这些似乎都是多余的
确保暂存表上没有任何索引。我们很想听听您的意见,您都做了哪些尝试,哪些奏效了,以及您是如何解决的。您能否提供有关平面文件外观的更多信息?你们的桌子是什么样子的?您正在执行什么样的业务逻辑?我认为我们需要更多的内容来帮助解决您的问题。一些需要研究的内容(如果还没有)正在使用批量插入任务。另外,确保您的暂存表处于简单模式——减少日志记录将提高速度,而且暂存表不需要日志记录。