0

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

现在,由于目标表的大小可能每天都在增加,这将是增量负载的最佳方法。我的脑海里没有几个选择:

  1. 查找任务

  2. 合并加入

  3. SCD

    ETC..

请建议我在增量负载中表现良好的最佳选择。

4

3 回答 3

4

看看 Andy Leonard 的优秀Stairway to Integration Services系列或 Todd McDermid 关于如何使用免费的SSIS Dimension Merge SCD 组件的视频 两者都将解决如何正确地做到这一点,比我在此框中所能列举的要好得多。

于 2012-04-18T20:32:55.180 回答
2

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

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

于 2012-04-18T21:11:41.163 回答
1

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

于 2012-04-18T20:11:52.090 回答