【问题标题】:Best way for incremental load in ssisssis 中增量负载的最佳方式
【发布时间】:2012-04-18 20:05:20
【问题描述】:

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

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

  1. 查找任务

  2. 合并加入

  3. SCD

    等等。

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

【问题讨论】:

    标签: sql-server-2008 ssis


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 那么,你推荐我在这种情况下使用哪个任务?
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-26
        相关资源
        最近更新 更多