【问题标题】:In informatica, my mapping took long time to fetch rows but reads within a minute在 informatica 中,我的映射需要很长时间才能获取行但在一分钟内读取
【发布时间】:2014-12-22 05:01:13
【问题描述】:

在我的映射中,将行提取到目标表需要很长时间,但它会在一分钟内从 .CSV 文件中读取这些行。在此映射中,一个源是平面文件,另一个源是具有来自目标的数据的表.在这里,我们根据来自平面文件和源表的数据(来自目标表的数据)的比较,在目标中创建一个更新、删除或插入的逻辑。在查看会话日志时,它会在一分钟内从平面文件中读取数据,但它会获取这些数据到目标以达到 9 行/秒的吞吐量。这里的目标表是使用 unix 脚本创建的,即CREATE TABLE STG_LM_INSTITUTION as (SELECT * FROM LM_INSTITUTION);此映射中的目标是 STG_LM_INSTITION。这是最终目标(LM_INSTITUTION)的副本。我认为问题是由于在脚本中创建 taget 表,但我不确定。任何人请帮我解决这个问题。源平面文件有 2L 行。我使用 2L 行运行此映射。11 小时后它只将 1L 记录提取到目标中。但是在使用 500rws 运行时,它只在一分钟内将记录提取到目标。

【问题讨论】:

  • 你绝对是一个序列。为什么我需要更改为 seq gen 转换?有什么具体原因吗?
  • 感谢 Marek.SQL_LM_INST_SEQ 是罪魁祸首。

标签: informatica informatica-powercenter


【解决方案1】:

SQL_LM_INST_SEQ 从 Oracle 序列中检索 PK 值,这很昂贵,因为对于每个插入的行,都需要往返数据库才能获得新的 ID。

改用序列生成器转换 - 集成服务将自行生成 ID。

【讨论】:

  • 嗨 Marek。这适用于前两次迭代。在第三次运行时,它需要很长时间,就像更改之前一样。如何解决这个问题???
  • 我正在使用相同的源文件进行测试。
  • 我正在使用相同的源文件运行测试。两者只是相同的表。 STG_FLAG_LM_INSTITUTION = STG_FLAG_LM_INSTITUTION 和 STG_LM_INSTITUTION = STG_FLAG_LM_INSTITUTION.while 在更新后的第三次运行(源文件中的小改动以验证它的更新是否正确)。但是花了很长时间
  • 我是否正确地使用相同的表作为源和目标。
  • 一步一步测试:没有变化,只有新行,只有变化的行,只有删除的行。每种情况下的性能是否都很慢?
【解决方案2】:

我看到您正在使用更新策略转换。 您是否尝试更新目标? 可能您必须在目标表上建立正确的索引。

【讨论】:

  • 只有两个主列SITE_CODE,SITE_NAME,另一个PK列是使用sql trans生成的INST_ID。INST_ID在源文件中不存在
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-31
  • 1970-01-01
  • 2013-10-11
  • 2012-12-03
  • 2011-03-14
  • 2021-01-15
相关资源
最近更新 更多