2个具有完全相同的会话属性的映射的行为完全不同,但逻辑稍有变化

时间:2018-06-22 19:48:49

标签: informatica-powercenter

我是一名Informatica开发人员。 我在informatica中有以下映射:

Original Mapping :

AS400(DB2SQ)->EXP->RTR->AGG1->MPLT->TGT1(SQL Server) Pipeline 1.
       |             |->AGG2->TGT2(SQL Server)
       |             |
       |             |->TGT3(SQL Server)
       ->AGG3->EXP->TGT4(FlatFile)           Pipeline 2.

大量记录正在通过管道1。我被要求优化流程。以下是我的建议。

  1. 在管道1中。删除AGG1和AGG2,并将聚合逻辑推送到数据库,这是我的建议,因为流是增量的,增量记录已加载到临时表中,因此期望性能会更好。
  2. 删除目标数据TGT3,因为它不是必需的。

这是我的优化映射现在的外观:

Optimized Mapping(What i thought) :

AS400(DB2SQ)->EXP->RTR->MPLT->TGT1(SQL Server) Pipeline 1.
       |             |->TGT2(SQL Server)
       |
       ->AGG3->EXP->TGT4(FlatFile)           Pipeline 2.

只是为了研究源性能优化,我替换了所有目标的session属性,而是将其写入文件。我想检查我是否仍然可以优化我的资源。

但是令我惊讶的是,当我同时执行两个会话(在单独的工作流程中,一个接一个地执行)时,我发现优化会话的SQ吞吐量比原始会话慢得多。

经过优化的解决方案中的所有操作都是完全相同的,就像我在删除2个聚合器和其中一个目标之前复制了原始映射/会话一样。

请注意:我正在开发的环境已启用版本控制,这有什么用吗?

我试图交叉检查这个倍数,但找不到答案。

1 个答案:

答案 0 :(得分:0)

如果您仔细查看会话登录详细信息,则可以更好地识别它。还可以在源dB中运行查询并检查时间,这还可以。您还可以通过使用push调整源端的性能下优化(即源端下推优化)。但是在此之前,请检查您的源dB,如果一切都很好,并且不需要花费很多时间。您还可以修改优化查询并查看性能。

如果仍然无法解决问题,则可以在sq中进行会话分区并检查性能。