Informatica 中的性能调优:完整教程

⚡ 智能摘要

Informatica 中的性能调优会逐层移除会话中最慢的链路,从目标层反向操作到源层(即映射层)。ping会话,以及最终的操作系统。

  • 🎯 固定订单: Informatica建议先查找瓶颈作为目标,然后是源,最后是映射。ping然后是会话,最后是系统。
  • 🧵 帖子统计数据说明了一切: 读者、转换和写作线程中最繁忙的那一层,就是需要改进的层。
  • 🚿 尽早筛选: 在源限定符中丢弃的行永远不会进入管道,因此下游不会产生任何成本。
  • 🗄️ 将工作推送到数据库: 在 SQL 中执行连接、排序和筛选操作通常比在转换中执行速度更快。
  • 🧊 缓存规则: 端口和查找列越少,缓存就越小,磁盘分页就越少。
  • ⚙️ 会话设置很重要: DTM缓冲区大小、缓冲区块大小、提交间隔和下推优化在映射之后进行调整。ping 很干净。

Informatica 中的性能调整

Informatica中的性能调优是什么?

在 Informatica 中,性能调优是指找到限制会话运行速度的组件,消除该限制,然后对下一个成为最慢组件的组件重复此操作。会话的运行速度始终取决于其最慢的层,因此,对从未出现问题的转换进行调优不会带来任何可衡量的性能提升。

Informatica 指出了五个可能出现瓶颈的地方,并建议按固定顺序检查它们。

下单 典型原因
1 Target 写入速度慢、检查点间隔短、数据库网络数据包大小小
2 来源 查询速度慢、缺少索引、读取了不必要的列
3 地图绘制 昂贵或位置不佳的转换,过大的缓存
4 时间 Buffer 内存、提交间隔、分区、加载类型
5 系统 集成服务机器上的 CPU 饱和度、I/O 等待和分页问题

这样的顺序是经过深思熟虑的。如果目标层无法足够快地吸收数据行,就会使所有上游层看起来都很慢,因此会首先检查它。完整的方法记录在……中。 PowerCenter 性能调优指南.

如何识别性能瓶颈

猜测哪一层速度慢比直接测量更浪费时间。以上列出的五层结构可以用四种方法进行测量。

  • 运行测试会话。 配置副本 会议 向平面文件目标写入数据。如果会话速度明显提升,则说明该目标文件是瓶颈所在。反过来,从平面文件源读取数据,则可以找出源端的瓶颈。
  • 分析帖子统计数据。 数据转换管理器运行一个读取线程、一个或多个转换线程和一个写入线程。会话日志中繁忙时间最长的线程直接指向要处理的图层:读取线程指向源图层,转换线程指向映射图层。ping为目标公司撰稿。
  • 分析性能细节。 启用会话性能数据收集并读取计数器。查找缓存中出现大量错误行或大量行表明映射存在问题。ping 这不是数据库问题,而是数据库问题。
  • 监控系统。 Operating 系统工具显示 CPU 使用率、I/O 等待和页面调度情况,以及 工作流监控器 资源视图显示,机器已达到处理能力极限。

一旦确定了负责层,以下各节中的转换层建议就值得应用了。这些章节按管道顺序排列,从数据进入的点开始。 地图ping 达到聚合的程度。

源限定符转换

源限定符未读取的每一行,其他转换都不需要处理,这使其成为整个映射中最经济高效的地方。ping 为了省时间。

  • 仅从源中提取所需的列。大多数情况下,源表中的所有列都不是必需的,因此只需删除不必要的列即可提取所需的字段。
  • 避免在子句中使用 order by 子句 源限定符 SQL 覆盖。ORDER BY 子句需要额外的处理,避免使用它可以提高性能。

过滤转换

过滤遵循相同的原则,只是步骤略有不同:在映射最早到达的位置丢弃不需要的行。ping 拥有足够的信息来识别他们。

  • 绝大部分储备使用 滤波器变换 尽早进入地图内部ping如果能在地图绘制初期就丢弃不需要的数据,ping这将提高吞吐量。
  • 使用源限定符筛选数据。您还可以使用源限定符 SQL 覆盖来筛选记录,而无需使用筛选转换。

细木工改造

在典型的地图中,连接是第一个真正昂贵的操作。ping因为必须先缓存主数据源,然后才能将详细行与之匹配。

  • 如果可能,请始终优先在数据库中执行连接操作,因为数据库连接比在 Informatica 中创建的连接操作速度更快。 连接器转换.
  • 如果可能,在加入之前对数据进行排序,因为它会减少加入期间执行的磁盘 I/O。
  • 创建行数较少的主表。

第三点最容易被忽略。集成服务会缓存主数据源,因此将较小的表指定为主表可以保持缓存较小。

查找转换

查找操作要么按行查询数据库一次,要么在内存中建立缓存,这两种方法都有利于使用更小、索引更好的查找源。

  • 在 A 中为该列创建索引 查找表 该字段用于查找条件。由于需要查询查找表来查找匹配的数据,因此添加索引可以提高性能。
  • 如果可能的话,在数据库中使用连接而不是查找转换。由于数据库连接速度更快,因此性能将会提高。
  • 从查找表中删除不必要的列,只保留所需的列。这将降低从数据库获取额外列的开销。

聚合器转换

An 聚合 它在对行进行分组的同时将数据保存在缓存中,因此任何减少到达它的数据的量都会减少它所需的缓存。

  • 在聚合数据之前先进行数据筛选。如果您在映射中使用筛选转换,ping然后,在使用聚合器之前对数据进行筛选,这样可以减少不必要的聚合操作。
  • 限制聚合转换中使用的端口数量。这将减少聚合转换存储在缓存中的数据量。

Informatica 中的会话级调优

当地图ping 程序本身运行良好,其余的性能提升都来自于会话属性。这些设置值得逐一更改,每次更改后都进行一次计时运行,因为其中一些设置会以内存为代价来换取速度。

设置 它控制什么 何时更改
DTM缓冲区大小 集成服务为源数据块和目标数据块分配的总内存 当会话处理多个分区、源或目标时,增加此值。
Buffer 块大小 单个内存块的大小 对于异常大的行,增加内存使用量;对于物理内存有限的情况,减少内存使用量。
提交间隔 在发出提交命令之前写入了多少行 当写入线程花费时间等待数据库检查点时,应抛出此异常。
下推优化 地图的多少ping 逻辑被转换成 SQL 语句,并由数据库执行。 当源和目标位于同一个强大的数据库中时使用。

Buffer 内存分配遵循既定的计算方法,而非猜测。集成服务为每个源分区和目标分区至少分配两个块,因此会话缓冲区块的数量为(源总数 + 目标总数)乘以 2,而 DTM 缓冲区大小为该块数乘以缓冲区块大小再除以 0.9。

下推优化需要谨慎对待。它仅在数据库速度确实比集成服务机器快,且转换逻辑可以用以下方式表达时才有效: SQL无法翻译的逻辑会保留在会话中,因此增益通常小于预期。应该在启用前后进行测量,而不是默认启用。

常见问题

当集成服务机器拥有充足的 CPU 资源,且源和目标可以支持并行连接时,分区有助于提高性能。但在 CPU 资源饱和的机器上,或者目标服务器是单线程的,额外的分区会增加开销,而不会缩短运行时间。

设置足够大的索引和数据缓存以容纳整个查找源,否则集成服务会将页面写入磁盘。会话日志会报告实际所需的缓存大小,因此请运行一次自动调整大小的命令并读取该值。

每次插入操作都需要维护目标表上的所有索引和约束,而这种开销会随着表大小的增加而增加。过时的数据库统计信息会使情况更加糟糕。此时,写入线程会成为最繁忙的线程,这是典型的数据库瓶颈特征。

是的,因为转换过程可以在每个分组结束后立即释放数据,而不是缓存所有内容。传入的行必须已经按分组端口排序,否则会话将失败。

对于大量仅插入式负载,请放下ping 通常情况下,先创建索引和约束,然后再重建它们会更快。会话属性的会前和会后 SQL 命令是编写这两个步骤脚本的常用位置。

批量模式绕过了大部分数据库日志记录,加载速度更快,但会阻止数据恢复,并且并非适用于所有目标或更新策略。普通模式通过常规日志路径写入数据,并且保持可恢复性。

基于历史运行时间训练的模型,会在任何人注意到之前很久就标记出持续时间偏离正常值的会话以及集群相关故障。它们会指出发生异常的运行——但具体是哪一层导致问题,还需要通过线程统计信息来确认。

它可以重写查询语句,建议索引候选方案,并解释粘贴到编辑器中的执行计划。由于它无法访问存储库或会话日志,因此任何重写都必须根据实际的执行计划和行数进行验证。

总结一下这篇文章: