博客
关于我
性能调优之Mapping
阅读量:483 次
发布时间:2019-03-07

本文共 1951 字,大约阅读时间需要 6 分钟。

Mapping层级的调优与性能优化

Mapping层级的调优是一个复杂而重要的过程,通常比表达式优化耗时更多,但其带来的性能提升却更加显著。在优化过程中,建议从优化Target和Source入手,再逐步调整Mapping的结构。为了实现这点,可以最大限度减少组件之间不必要的连接,通过最少的组件完成最多的数据处理工作,同时缩减组件字段间的数据传输量。

Source平面文件优化

  • 调整Line Sequential Buffer长度

    Integration Service默认每行会读取1024个字节的数据。如果文件中每行的字节数较少,可以在Session Properties中调整Line Sequential Buffer的大小,减少不必要的缓存读取内存,提升读取效率。

  • Delimited Flat File处理

    Delimited Flat File通过分隔符将字段边界分开,但在包含转义字符的情况下,Integration Service会将转义符作为普通字符处理。建议尽量减少使用转义字符,尤其是在文件中没有包含冒号的情况下,这样可以显著提高文件读取性能。

  • XML文件处理

    XML文件由于其结构化特点,其标签和层级越复杂,文件体积就越大。读取XML文件时,Integration Service需要进行节点结构解析和缓存操作,这会导致读取速度较慢。因此在读取XML文件时,建议优化文件结构,减少不必要的标签层级,提升读取效率。

  • Single-Pass Reading配置

    Single-Pass Reading是一种高效的数据处理方式,通过在一个Source读取数据后,将其发送至多个不同的Target。这种方式特别适用于多个Session同时从同一个数据源读取数据时,可以避免重复读取数据,提升整体处理效率。将多个Mapping合并到一个Mapping中,确保Source只读取一次,并通过管道分发至多个Target,是一个理想的实现方式。

    Pass-Through Mapping创建

    Pass-Through Mapping是数据处理中的简单映射方式,将Source Qualifier直接连接到Target对应字段,是最直接、高效的映射方式。

    Filter数据过滤

    在数据处理过程中,过滤是减少数据量而提升处理效率的重要手段。可以通过Source Qualifier和Filter组件来实现过滤。Source Qualifier适用于关系型数据库,而Filter组件可以应用在任何数据源。过滤时,避免使用复杂表达式,应以简单整数或布尔值为目标,可以通过Filter或Router组件去掉不需要的 rej数据。

    数据类型转换优化

    不必要的数据类型转换会显著影响性能。仅在必要时才做类型转换,避免多次不必要转换。例如,在与lookup或filter组件配合使用时,尽量使用整数类型代替其他类型。当需要将日期类型转换为字符串时,可以直接进行端口到端口转换,避免复杂的表达式判断。

    表达式优化

  • 创建可复用逻辑

    如果某些处理逻辑在多个Mapping中重复出现,可以将其提取为一个可复用的逻辑,并在上游完成处理后,将结果输送至下游目标。

  • 减少聚合函数使用

    每次调用聚合函数时,Integration Service都需要进行数据检索和分组操作。使用聚合函数时,尽量将多个SUM操作合并为单个SUM,例如将SUM(COLUMN_A) + SUM(COLUMN_B) 替换为 SUM(COLUMN_A + COLUMN_B)。

  • 使用本地变量替换表达式

    在组件内部,可以通过本地变量存储复用表达式,以减少重复计算,提升性能。

  • 字符比对优化

    Integration Service在执行Char和Varchar列之间的比较时,会因为尾随空格的问题而减慢速度。可以在Integration Service中配置TreatCharasCharonRead选项,以避免尾随空格的处理。

  • 选择适当的数据操作

    Integration Service处理数值操作的速度远高于字符串操作,尽量操作数值字段。而在需要字段匹配时,ID字段的匹配速度要高于名称字段。

  • 优化IIF函数与表达式

    IIF函数配合过多的逻辑运算符会大幅影响性能。可以通过简化表达式,避免嵌套IIF函数,改为直接条件判断或分解为多个IIF函数。

  • 表达式评估

    如果难以确定哪个表达式对性能有影响,可以通过替换部分固定值进行测试,找出影响性能的表达式。这种方法可以帮助逐步缩小问题范围,优化关键表达式。

    外部过程优化

    外部 processData的处理可以通过阻断其他数据源的输入数据来优化性能,避免多线程读取。使用阻断功能可以提升外部处理过程的效率。

    转载地址:http://vyicz.baihongyu.com/

    你可能感兴趣的文章
    83. Remove Duplicates from Sorted List
    查看>>
    痞子衡嵌入式:串口调试工具pzh-com诞生记(2)- 界面构建(wxFormBuilder3.8.0)
    查看>>
    Nmap扫描工具介绍
    查看>>
    常用Windows 快捷键
    查看>>
    linux命令-压缩与打包
    查看>>
    Oracle Orion tool check io(ORACLE Orion 工具查看以及校验IO)
    查看>>
    oracle 11g not in 与not exists 那个高效?
    查看>>
    玩玩小爬虫——试搭小架构
    查看>>
    Javascript之旅——第九站:吐槽function
    查看>>
    Sql Server之旅——第十站 看看DML操作对索引的影响
    查看>>
    双十一来了,别让你的mongodb宕机了
    查看>>
    深入探索Android热修复技术原理读书笔记 —— 热修复技术介绍
    查看>>
    Python大神编程常用4大工具,你用过几个?
    查看>>
    一文带你了解图神经网络
    查看>>
    linux kernel version magic 不一致导致的模块 加载 (insmod) 不上
    查看>>
    centos7一步一步搭建docker jenkins 及自定义访问路径重点讲解
    查看>>
    MySQL 1064 You have an error in your SQL syntax 错误解决办法
    查看>>
    【Flink】Flink 底层RPC框架分析
    查看>>
    MySQL错误日志(Error Log)
    查看>>
    oracle使用DBMS_RANDOM包生成随机数据
    查看>>