【问题标题】:Alternative for look up task in SSISSSIS中查找任务的替代方案
【发布时间】:2009-10-22 12:31:26
【问题描述】:

我正在研究用于数据仓库的 SSIS 解决方案,用于提取相应应用程序键的代理键,我正在使用 SSIS 的查找任务,但此任务的问题是它将完整的查找表缓存在其内存中。而且我的查找表大小很大,即 2000 万条记录。因此,如果您可以建议一些查找任务的方法或替代方法

【问题讨论】:

    标签: sql-server-2005 ssis etl


    【解决方案1】:

    我不认为包含 2000 万条记录的表太大而无法查找。您可以进行一些过滤,并通过在查找中仅选择所需的列来优化它以使用少量内存。

    例如,如果您有一个 int 类型的键列和一个大小为 10 的 varchar 列进行查找,则一条记录将占用 4+10bytes 和 2000 万到 20Mx(4+10) ~= 280MB,这是不能考虑的太高了。

    如果你想减少内存使用,你将不得不使用连接。

    【讨论】:

      【解决方案2】:

      当您将数据引入 SSIS 包时,对您的查找数据执行 LEFT JOIN,然后评估您需要做的事情。

      如果查找表位于不同的源中,那么您可以在 SSIS 中执行 LEFT JOIN,但这也会缓存行。我认为 JOIN 可能比 Lookup 快一点。

      【讨论】:

      • 但问题是查找表位于不同的源中,并且为如此大的表剂量缓存表运行时间似乎是收费选项
      【解决方案3】:

      您必须扫描整个表吗? IE。您可以将查找指定为表上的数据库视图,甚至可以将其指定为 SQL 查询的结果(使用 SQL 查询的结果选项)

      【讨论】:

        【解决方案4】:

        确保在查找表中只选择需要的列,不要缓存不需要的列。花点时间看看 MS "Project "Real" 在大数据量应用程序中使用 SSIS 并讨论最佳实践。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-20
          • 1970-01-01
          • 2017-06-17
          相关资源
          最近更新 更多