websphere调优_WebSphere Transformation Extender的性能调优技巧

本文提供了有关IBM®WebSphere®Transformation Extender(以下称为WebSphere TX)的性能提示和建议,无论它运行在哪个平台上。 本文将帮助您利用WebSphere TX的灵活性和功能进行数据转换,同时仍能达到性能目标。

性能一词是指每个时间段的工作负载,同时还考虑了内存,磁盘空间和其他资源的使用情况。 本文重点介绍WebSphere TX映射作为性能调整的主要区域,并提供各种与地图相关的性能提示。

卡设置性能提示

卡设置调整参数可用于控制卡处理行为。

重复使用WorkArea卡设置

工作区文件包含各种输入数据类型对象的元数据。 通过在卡设置中将WorkArea设置为Reuse ,可以在任何输入卡的后续运行中重用工作区。 只要有可能,请重用工作区,尤其是对于大数据量或需要复杂验证的数据,因为性能改进可能非常重要。

尽可能禁用写入备份文件

使用“突发”作为FetchAs输入卡设置

突发模式意味着映射将在FetchUnit参数定义的数据单元中指定的块中检索输入数据。 这些单位对应于数据流中的*别的重复对象。 连拍模式可最小化工作区的大小,从而提高性能。

数据大小提示

最重要的技巧是了解您的数据,这将帮助您确定设置调整参数以及创建类型树和映射的最佳方法。

对大量数据使用突发模式

有关更多信息,请参阅卡设置性能提示

使用路由处理大数据量

路由是根据数据值将输出拆分为单独的文件。 数据路由可用的功能包括RUN()和PUT()。 RUN()允许映射执行辅助映射,而PUT()在某些路由情况下可能不可行:

  • 避免使用其他地图来路由数据。 而是将PUT()与适当的适配器一起使用,因为它比RUN()产生更好的性能。
  • 如果需要使用辅助映射进行附加处理以提供输出生成的灵活性,请使用RUN()。
  • 通过应用良好的映射和类型树设计来最小化路由数量,这将缩短执行时间。
  • 在路由器映射中,使用HANDELIN()而不是ECHOIN()。 HANDELIN()允许所有ECHOIN()函数,但将指针传递给数据而不是回显数据,从而减少了验证时间。

变更提示的数据频率

对于静态数据,请尽可能重用WorkArea

查找表是使用静态数据的地图的经典示例。 可以绕过这些源的验证步骤,从而减少了总体执行时间。 有关更多信息,请参阅卡设置性能提示

数据序列提示

对于未排序和未分组的数据,请使用标识符来促进数据验证

数据序列还可以确定最佳类型和地图设计方法。 您需要确定数据是否已排序和分组。 如果对数据进行了排序和分组,则地图功能可以选择特定的数据组。 如果未对它进行排序和分组,则在验证期间数据中可能存在要对其进行排序的标识符。 有关更多信息,请参见输入树提示

数据独立提示

如果输入数据记录之间没有关系(换句话说,如果每个记录都是独立的),那么这里有两个提示:

使用具有独立数据的突发模式以较小的块处理数据

使用RESTART属性和REJECT函数捕获无效数据

数据结构技巧

如果可以定义输入数据结构,则最好处理固定数据,而不是从性能角度来界定。 固定组对象需要一个与数据本身大小相同的工作区,需要较少的磁盘空间和内存,并可以加快处理速度。 另一方面,验证定界的组对象需要更多的检查,因此需要更长的时间,并且工作区域可以扩展到实际数据大小的四到五倍。

类型树提示

好的类型树是每张好的地图的共同因素。 以下是一些建议,以确保您的类型树根据需要定义数据,同时还可以最小化验证时间以提高性能:

在类型树设计中使用“标识符”属性

Identifier属性标记指定数据对象类型的组件。 因此,标识符可以帮助引擎确定数据是否有效,而不必解析所有数据。 例如,如果标识符是记录中的第二个字段并且发生错误,则引擎将在确定数据与类型属性,限制或组件规则不匹配时立即停止处理该记录。 此过程可防止处理无效数据并减少验证时间。

在类型树设计中使用RESTART属性

RESTART属性在验证期间用作恢复点。 重新启动将返回到最后一个重新启动点,并在使用有效数据构建输出时忽略无效的输入对象。 如果不使用RESTART,则映射将在遇到无效数据时失败,即使该无效数据位于大文件的最后一条记录中,由于重新处理和重新验证,这也会增加处理时间。 使用RESTART的提示:

  • 将RESTART分配给序列范围为(1:x)或(s)的组件。 否则,它将对数据验证无效。
  • 将RESTART放在数据中的逻辑重启点上,换句话说,将其放在独立数据中,例如记录组件中。 建议在这种情况下使用连拍模式。
  • 将REJECT函数与RESTART属性一起使用,可以映射包含在拒绝的工作区域中的无效记录。

在类型树设计中使用Empty属性

当组或项目没有数据内容时,Empty属性可为它们提供替代类型的语法对象。 此技术减少了验证期间类型树的处理时间。

在类型树设计中使用分区属性

通过将对象细分为互斥的子类型,分区定义了出现在数据流中同一位置的不同类型的无序数据。 分区有助于数据区分,并有助于在验证期间对数据进行排序。 分区还简化了映射规则,有助于确保仅将所需的数据传递到输出,加快处理和验证的速度,并总体上提高性能。 当分区数据在类型树中排序时,将根据分区列表验证分区数据。 通过默认,它们可以按字母升序排序,尽管可以是降序或任何有助于验证的序列。 引擎将按照每个分区在列表中出现的顺序对其进行测试,直到找到匹配项。

  • 为了获得最佳性能,请始终将最频繁使用的分区放在列表的顶部,以消除针对其他分区的不必要的验证测试:
    图1.排序分区
    websphere调优_WebSphere Transformation Extender的性能调优技巧
  • 分区可以按启动器,限制或格式对项目进行分区,也可以按启动器,标识符或组件规则对组进行分区。 与启动器一起使用分区是最有效的。

在类型树设计中使用Track属性

Track属性指示是否只应跟踪具有内容的组件,还是应跟踪所有组件(包括空组件)。 您可以指定跟踪内容或跟踪位置。 尽可能使用跟踪内容,以减少处理时间。

验证数据内容

通过应用业务规则验证内容可防止处理无效数据。 类型树提供了两个推荐的用于验证内容的选项:

  • 使用限制列表将项目限制为特定值或一组值。
  • 使用组件规则来指定验证特定组件的条件。

根据您的业务需求选择限制列表,组件规则或映射规则:

  • 使用限制列表或组件规则来指定影响验证的逻辑。
  • 如果项目的值限制为一组特定的值,请使用限制列表。
  • 如果逻辑与输出数据对象及其确定或计算方式有关,请使用映射规则。

适当定义数据类型

  • 通过适当定义源数据以匹配目标数据,避免使用数据转换功能。 例如,避免使用NUMBERTOTEXT()将源编号字段定义为“编号而不是文本”。
  • 避免通过填充使用TRIMLEFT()和TRIMRIGHT()。

忽略无关紧要的数据

  • 不要解析将不会在映射中使用的字段或记录。 例如,当可以忽略大部分数据时,请创建定义数据斑点的项目对象,以减少验证时间。

尽可能将映射逻辑放入类型树而不是映射中

映射技巧

本节提供了改进地图的技巧,以便它们可以尽可能高效地运行并帮助优化性能。

避免在同一图中多次重复逻辑

例如,在每个地图中只执行一次特定的字段查找。 使用第一次查找中的输出卡可以消除后续查找,这将大大减少处理时间。

合并数据和卡对象

例如,可以将包含交叉引用信息的多个输入卡合并到一张卡中。 同样,您通常可以将用于执行转换准备的多个输出卡合并为单个卡,以减少不必要的处理并提高性能。

使用暂存文件和接收器与文件适配器

临时文件是临时工作文件,用于将复杂的逻辑分解为简单,可管理的步骤。 用于暂存文件的输出卡通常将接收器适配器用作输出卡的临时数据目标,然后丢弃映射的数据。 由于较少的文件I / O,此技术可提供更快的映射性能,减少在运行多个映射实例时的文件资源冲突,并减少磁盘空间使用。

  • 在开发过程中使用文件适配器查看中间输出,然后更改为接收器适配器。
  • 要处理非常大的文件,请使用“事务处理成功”选项设置为“创建”的“文件”适配器,仅在数据无效时创建文件。 该技术可能比使用接收器适配器更有效,因为它不包含“事务”设置来阻止成功创建文件。

功能图提示

消除仅发生一次的段的不必要的功能图

仅在功能映射调用中传递所需的参数

将不需要的数据传递到功能图是对系统资源的不必要使用。 功能图将针对其参数的每个组合运行一次。

限制传递到功能图的数据

当仅需要处理数据的一个子集时,将过滤函数(例如EXTRACT()和IF())与功能映射调用一起使用,以仅传递相关数据。 该技术消除了处理无关数据所花费的时间和资源,简化了映射并提高了性能。

使用功能图而不是运行图

由于运行图要慢得多,因此请尽可能使用功能图。

查找技巧

输入和输出格式要求可以帮助您决定使用哪些搜索功能以获得最佳性能。 除了外部功能外,查找功能是一些最耗时的功能。

搜索前而不是搜索后过滤数据

通过在SQL语句中使用WHERE子句过滤查找数据,或对重复搜索的数据使用功能映射,可以加快搜索速度。

查找期间对冗余数据使用UNIQUE()函数

使用UNIQUE()函数提取唯一的事件并防止处理冗余数据。 它返回系列的所有唯一成员。

尽可能将LOOKUP()函数替换为任何其他搜索函数

LOOKUP()函数使用的搜索算法比其他搜索函数要慢,因为它逐个对象地扫描数据文件,查找与指定条件匹配的第一个对象。

将SEARCHUP()或SEARCHDOWN()与已排序或可以排序的搜索数据一起使用

这两个函数使用的搜索算法将数据作为二叉树进行遍历,从而利用排序后的数据。

在SQL查询中使用SORTUP(),SORTDOWN()或ORDER BY子句以确保对查询数据进行排序

SEARCHUP()和SEARCHDOWN()比LOOKUP()快得多。

使用EXTRACT()与LOOKUP()

如果一个对象足够,请使用LOOKUP(); 否则使用EXTRCT()。

使用CHOOSE()而不是SEARCHUP()或SEARCHDOWN()

在CHOOSE()始终引用相同类型的情况下,它比SEARCHUP()或SEARCHDOWN()更快,因为CHOOSE()直接进入一系列对象中的指定实例。

尝试其他查找功能

尝试使用其他查找功能,运行Map Profiler,然后检查运行时结果以确定最佳查找功能。

外部数据库功能提示

一个常见的性能陷阱是过度使用需要外部查找的交叉引用函数,例如DBLOOKUP()和DBQUERY()。 尽管所有外部函数都会花费大量时间进行地图处理,但最常用的是数据库函数。

  • 调用功能映射时,避免或减少外部数据库查询。
  • 避免频繁执行同一查询。
  • 使用单个查询缓存查找数据。
  • 批处理在单个语句中插入,更新和删除。
  • 选择最佳的交叉引用功能。
  • 限制使用需要更多处理时间的功能。
  • 使用临时文件可以简化以后的处理。

用功能替换适配器的提示

例如,为了提高性能,不要在地图的命令行中使用Base64适配器,而应在地图规则中使用BASE64TOTEXT()或EXTTOBASE64()Base64转换函数。

交易管理技巧

在映射执行期间,事务设置包括“源或目标适配器”,“范围”设置和“事务承诺”。 范围设置可以通过“地图”(默认设置),“卡片”或“连拍”提交。 对于Burst,事务在执行每个语句之后或有选择地在指定数量的语句(例如INSERT,UPDATE,DBLOOKUP和DBQUERY语句,存储过程或GET函数)之后提交或回退。 该技术每行需要更多的数据库调用,这会降低性能,但是可以通过指定大量语句来抵消这种降低的速度。

识别性能瓶颈的提示

与其盲目地进行地图重构以提高性能,不如检测性能最慢或资源过度消耗的地图瓶颈。

使用页面设置和dtxpage命令

页面设置定义如何将工作空间切成段,其中一次仅将工作和数据文件的一个子集保留在内存中。

  • PageSize定义用于存储数据和工作文件的内存段的大小。
  • PageCount指定要使用的内存页数。
  • 为具有许多类型引用的地图增加PageSize的值。
  • 处理大量数据时,请增加PageCount的值。

使用dtxpage命令优化PageSize和PageCount的值以提高性能。 要运行dtxpage命令:

  1. 编译映射以生成.mmc文件。
  2. 如果尚未安装Command Server,请安装它。
  3. 在安装目录中运行命令服务器。
  4. 使用已编译的映射文件作为参数调用命令: dtxpage mapname.mmc

    该命令将使用提供的输入进行多次迭代来运行地图,并使用每个页面的不同页面设置来检测最佳设置。 输出将列出所有迭代的结果,然后列出PageSize和PageCount的建议最佳值。 这是运行dtxpage的示例:

    图2.调用dtxpage命令
    websphere调优_WebSphere Transformation Extender的性能调优技巧

使用Map Profiler和dtxprof命令

Map Profiler是用于捕获和报告地图统计信息的易于使用的可配置工具。 它可以为每个操作提供精确的性能度量,并揭示需要的改进。 Map Profiler在Design Studio中可用,也可以从Command Server运行。 Map Profiler可以捕获以下统计信息:

  • 组件,映射规则和功能的处理时间
  • 规则和功能执行计数
  • 类型对象访问次数
  • 对象嵌套级别

要从Design Studio运行Map Profiler:

  1. Window => Preferences => Transformation Extender => Map => Profiler中选择所需的分析模式和设置。
  2. 选择地图,然后单击“ 启用探查器”
  3. 重建地图并运行。
  4. 将创建一个报告并将其放置在地图文件夹中。 您也可以在Profiler窗口中查看报告。

要从命令服务器运行Map Profiler:

  1. 编译映射以生成.mmc文件。
  2. 如果尚未安装Command Server,请安装它。
  3. 在安装目录中运行命令服务器。
  4. 使用已编译的映射文件名,输出文件名和所需的概要分析选项作为参数来调用命令: dtxprof -dtx MapName.mmc -o OutputFileName [-f[x]][-t[x]][-fs][-ts][-d]
    图3.调用dtxprof命令
    websphere调优_WebSphere Transformation Extender的性能调优技巧

地图设置性能提示

本节提供了通过地图设置改善地图性能的提示。

审核日志设置

审核日志提供有关地图执行,地图设置,卡设置和数据对象的信息。 审核日志是高度可配置的,并且会影响性​​能。 以下是一些配置提示:

  • 自定义审核日志,并在可能的情况下将其存储在内存中。
  • 确保仅在需要时才为输出生成审核日志,因为它们会自动调用输出验证。
  • 避免在审核日志中使用不必要的详细信息和数据,尤其是对于包含许多对象的大型树而言。
  • 避免为未映射的对象设置审核日志。
  • 如果仅需要用于分析错误情况的审核日志,则根据需要将Execution选择为OnErrorOnWarningOrError

跟踪设置

跟踪文件可使地图的速度降低50%以上,并生成比输入文件大许多倍的文件。

  • 不要在关键资源环境中生成详细的跟踪文件。
  • 尽可能使用审核日志而不是跟踪文件。

验证设定

执行映射时,将根据预定义的输入定义对输入数据进行解析和验证。 验证设置控制验证行为以及对不同验证错误的响应。 您可以通过使用RestrictionErrorSizeErrorPresentationError的设置来选择是验证限制,大小还是表示 而且,您可以使用OnValidationError设置指定对第一个验证错误采取的措施。 验证设置提示:

  • 在软化验证要求时要谨慎。 但是,如果您的数据已经由另一个质量控制系统验证,则软化验证可以显着提高性能。
  • 选择OnValidationError设置时,请考虑您的业务需求。 遇到无效数据后继续处理可能会浪费时间和资源。

工作文件的工作区位置和分页设置

工作空间位置和页面调度的最佳设置可以提高地图处理速度。 最佳设置取决于您的地图和数据:

  • 对于较小的数据量,请使用基于内存的工作区和较小的分页大小。
  • 对于大数据量,请使用基于文件的工作区以及较大或默认的分页大小。
  • 通过使用dtxpage命令优化PageSize和PageCount的值。 有关更多信息,请参阅页面设置和dtxpage命令一节

结论

本文提供了许多改善WebSphere TX映射性能的详细技巧。 主题包括在类型树中定义数据。 映射规则和映射输入/输出卡; 地图调整参数和卡设置; 并与外部应用程序或数据库连接。 本文还向您展示了如何使用可配置工具来检测性能瓶颈并执行设计和开发改进的连续迭代。


翻译自: https://www.ibm.com/developerworks/websphere/library/techarticles/1312_selim/1312_selim.html