增量加载的最佳方法

时间:2012-04-18 20:05:20

标签: sql-server-2008 ssis

我每天从源获取600,000行,我需要将它们转储到SQL Server目标,这将是一个增量加载。

现在,由于目标表大小可能会逐日增加,这将是增量负载的最佳方法。我的想法很少:

  1. 查找任务
  2. 合并加入
  3. SCD

    等。

  4. 请建议我在增量负荷下表现良好的最佳选择。

3 个答案:

答案 0 :(得分:4)

看看Andy Leonard的优秀Stairway to Integration Services系列或Todd McDermid关于如何使用免费SSIS Dimension Merge SCD component的视频。两者都将解决如何做得更好列举在这个框中。

答案 1 :(得分:2)

合并连接是一个巨大的性能问题,因为它需要预先对所有记录进行排序,不应该用于此。

我们每天处理许多数百万条记录文件,并且通常将它们放在临时表中,并与我们的更改数据跟踪表中的数据进行哈希比较,以查看数据是否与prod上的数据不同,然后仅加载新数据一个或一个不同的。因为我们在生产数据库之外进行比较,所以我们对产品的影响非常小,因为我们不需要检查数百万条针对产品的记录,我们只处理它实际需要的247。事实上,对于我们最繁忙的服务器,所有这些处理都发生在一个单独的服务器上,除了最后一步到prod。

答案 2 :(得分:1)

如果你只需要插入它们,它实际上并不重要。 如果你需要检查类似的内容,如果存在,则更新else insert,我建议创建一个oleDbSource,在其中查询600.000行并检查它们是否存在于现有数据源上的查找任务。由于现有数据源是(或倾向于)巨大,因此请注意配置缓存模式的方式。我会选择部分缓存,其中一些内存限制是由你正在查找的ID排序的(根据缓存的工作方式,这个详细信息非常重要)