【问题标题】:Informatica CDC Mapping: Group Source is fetching records SlowlyInformatica CDC 映射:组源获取记录缓慢
【发布时间】:2017-09-15 09:57:32
【问题描述】:

我们有 37 个 Informatica 会话,其中大多数会话平均有大约 25 个表。很少有会话将 1 个表作为源和目标。我们的源是 Oracle,目标是 Greenplum 数据库。我们正在使用安装在 Oracle 上的 Powerexchange 10.1 来获取我们更改的记录。

我们注意到,对于具有更多表的会话,获取数据并在目标中更新需要更多时间。添加更多表格是否会导致处理延迟?在那种情况下如何调优以尽可能快地获取记录?

【问题讨论】:

    标签: informatica informatica-powercenter informatica-powerexchange oracle-cdc


    【解决方案1】:

    我们运行了 19 个 CDC 映射,每个映射包含 17 到 90 个表,并且最近在性能方面取得了突破。桌子的数量对我们来说不是最重要的限制因素,电力中心和电力交易所才是。我们的来源是 z/OS 上的 DB2,但这可能并不重要…… 这就是我们所做的:

    1) 我们将 DTM 缓冲区块大小增加到 256KB,将 DTM 缓冲区大小增加到 1GB 或更大,“复杂”映射需要许多缓冲区块。

    2) 我们将连接属性更改为: - 实时刷新延迟=86000(最大设置) - 会话中的提交大小设置得非常高(以允许上述设置成为决定因素) - OUW count=-1 (同上原因) - 每次提交的最大行数=0 - 每次提交的最少行数=0

    3) 我们将会话属性“恢复策略”设置为“失败任务并继续工作流程”,并实施了我们自己的解决方案,以在每次工作流程启动时从头开始创建“重新启动令牌文件”。 只是稍微偏离主题:我们实现这一点的方式是使用一个仅包含一行的额外表(我们称之为 SYNC 表)。该行在源上每 10 分钟通过一个非常可靠的计划进程(一个小型​​ CICS 程序)更新一次。此表的内容会在每个工作流中写入一次目标数据库,并在映射中添加一个额外的列,其中包含 $$PMWorkflowName 的内容。除了 workflowname 列之外,两个 DTL__Restart1 和 *2 列也被写入目标。 在工作流启动期间,我们在实际 CDC 会话之前运行一个小型可重用会话,该会话从目标端的 SYNC 表中读取当前工作流的记录,并从头开始创建 RESTART 文件。 [请注意,您最终会在目标中重复最多 10 分钟(从工作流开始时间开始)。我们接受这一点,并将其汇总到从这些读取的所有映射中]

    尝试修改这些组合并说出您的体验。现在,我们在 10 分钟间隔内的最大吞吐量为每个映射 10-1 亿行。我们的目标是 Netezza(又名 IBM 的 PDA)

    我还要告诉你一件事: 每次触发提交时(使用上述设置每 86 秒)power center 将针对一个大提交范围内的所有表清空其所有写入缓冲区。如果其中任何一个被另一个进程锁定,您最终可能会在写入端出现大量级联锁定,这会使 CDC 看起来很慢。

    【讨论】:

    • 对于你提到的第三点,你是如何实现重启令牌文件创建的?使用上次检查点的简历是否会在此处产生任何问题?
    • 我刚刚编辑了答案,虽然是一个非常简短的解释,但我希望你能关注我。话虽如此:在全面生产之前,您应该尝试衡量从该更改和所有其他建议更改中获得的速度提高多少。另外两个更改要容易得多,并且可能具有相同的效果,所以从那里开始:)
    • Hi Lars 感谢您的回复,我会执行您提供的建议并让您知道结果。
    • 嗨 Lars,根据您的建议,我们增加了 DTM 缓冲区块和缓冲区大小,它工作正常。我们还增加了提交点。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 2019-07-03
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多