0

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

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

4

1 回答 1

0

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

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

2)我们将连接属性更改为:-实时刷新延迟=86000(最大设置)-会话中的提交大小设置得非常高(以允许上述设置成为决定因素)-OUW计数=-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 看起来很慢。

于 2017-09-16T17:30:42.007 回答