SSIS,导致性能下降的原因是什么?

时间:2014-06-27 11:30:28

标签: performance ssis bulkinsert

For Source:OLE DB Source - Sql Command

SELECT -- The destination table Id has IDENTITY(1,1) so I didn't take it here
       [GsmUserId]
      ,[GsmOperatorId]
      ,[SenderHeader]
      ,[SenderNo]
      ,[SendDate]
      ,[ErrorCodeId]
      ,[OriginalMessageId]
      ,[OutgoingSmsId]
      ,24 AS [MigrateTypeId] --This is a static value
  FROM [MyDb].[migrate].[MySource] WITH (NOLOCK)

目的地:OLE DB目的地

enter image description here

需要5分钟或更长时间才能插入1.000.000数据。我甚至取消选中 Check Constraints

然后,使用相同的 SSIS配置,我想用另一个表与Destination表完全相同来测试它。因此,我重新创建 目标表(除了内部数据时具有相同的约束)并命名为dbo.MyDestination

但是使用相同数量的数据完成SAME数据大约需要30秒或更短时间。 为什么测试表而不是原始表显着加快?是因为原始表已经有107.000.000数据吗?

1 个答案:

答案 0 :(得分:1)

检查目标表上的索引/触发器/约束等。这些可能会大大减慢速度。

检查OLE DB连接管理器的数据包大小,正确设置,您可以按this article将其设置为正确的值。

如果您熟悉SQL Server Profiler,请使用它来获取更多信息,尤其是当您使用重新创建的表格对原始表格插入数据时会发生什么。