【问题标题】:SSIS lookup transformation cache workingSSIS查找转换缓存工作
【发布时间】:2017-07-07 07:57:46
【问题描述】:

我有一个场景,其中 SSIS (2008) 包具有在 ForEach 容器内运行的数据流转换 (DFT)。

DFT 从 SQL 服务器表中获取源数据,并使用缓存管理器将缓存文件数据加载到查找转换(完整缓存机制)中以查找潜在匹配项,并将相应的匹配\不匹配结果转储到一个 sql server 表。

问题 1、下一次迭代,是重新加载缓存用于后续查找任务的查找转换还是使用上一次迭代时加载的相同缓存结果?

  1. 如果不是,是否最好对迭代运行的 DFT 使用缓存查找机制?

  2. 除了将 DFT 逻辑完全实现到 SQL Server 中之外,最好的解决方案是什么?

任何指针都会有很大帮助。

【问题讨论】:

  • 您正在循环播放源。您的源查询如何与循环结果相关联?这一点可能有助于提出替代方案
  • 每个循环的源查询都会发生变化,而查找参考数据对于每个循环保持不变。对于查找转换,我使用缓存连接管理器作为连接类型。

标签: sql-server caching ssis


【解决方案1】:

对于下一次迭代,它是否会重新加载缓存以用于后续查找任务的查找转换,还是会使用上一次迭代期间加载的相同缓存结果?

-->它将被重新加载。

如果不是,是否最好对迭代运行的 DFT 使用缓存查找机制?

--> 好问题。如果可能的话,更好的选择是将缓存填充到 DFT 之外。

除了将 DFT 逻辑完全实现到 SQL Server 中之外,最好的解决方案是什么?

-->使用缓存管理器的基本思想是能够在需要时跨多个 DFT 重用它。如果它在 DFT 中使用,那么它就违背了这个目的。这样做可能会获得部分性能优势,但不会增加使用 Lookup 本身的价值。

【讨论】:

  • 感谢您的回复,但我想知道如何在 DFT 之外加载缓存,因为查找转换仅在 DFT 内部可用。
  • 此外,对于每次迭代,DFT 都通过缓存连接管理器将缓存文件(存储在物理驱动器上)中的数据读取到查找转换的缓存中。有没有更好的选择?
  • 我的意思是在 Foreach 循环容器之外填充缓存文件,方法是使用主查询来获取一组完整的记录,在这些记录上查找(或)根据需要使用尽可能多的数据源单个数据流任务,应用合并/联合并填充缓存。完成此操作后,DFT 中的查找将变得简单快捷。话虽如此,如果您没有在循环任务或包中的单个或多个 DFT 中的多个查找中使用此缓存连接管理器,那么它不值得使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多