Informatica中查找转换的性能问题



我正在使用查找转换来比较我的源数据和目标数据,它们都来自不同的数据库,我们正在使用source_System_id列来进行比较。由于Source_System_id的此值是使用目标中的TO_CHAR(PERSON_KEY(||'~'|Source_CD||'~'|TYPE_CD派生的,因此在查找中,我正在编写一个查找覆盖查询来复制该查询。target中的Source_System_id列是索引的,它是主键,但当我尝试使用查找将其与源表进行比较时,性能非常慢,并且在构建缓存时需要时间。有人能建议如何提高性能吗。

似乎有很多数据要缓存。所以,以下是我的建议。

  1. 从查找中删除所有不需要的端口。也从LKP SQL覆盖中删除不需要的ORDER BY子句,并只保留密钥。

  2. 首先,从会话日志中收集LKPSQL,并在DB中运行它,看看它是否在预期时间内返回了查找中的所有数据。如果这个SQL需要时间,那么SQL就有问题了。试着调整一下
    2.1-您可以添加一些日期过滤器来限制缓存数据
    2.2-您还可以应用其他类型的筛选器来限制缓存的数据
    2.3-与目标或某些其他表连接以限制数据
    2.4-如果以上选项不可能,请创建一个新的映射,将数据暂存到目标中只有source_id的表中,并在主映射之前运行它。然后将这个小阶段表与查找主表连接起来以限制数据。1.5-如果以上所有操作都失败或无法实现,可以添加一些索引或提示,使SQL更快。

  3. 不要在查找查询中连接(我认为您没有这样做,但仍在说(。

  4. 如果你不能实现以上几点,或者它们没有帮助,那么你可以增加查找缓冲区的内存大小。

  5. 有时增加并发查找的数量会有所帮助。

最新更新