美文网首页
kettle 知识

kettle 知识

作者: 铁牛很铁 | 来源:发表于2018-10-23 12:50 被阅读31次

    kettle的正常转换速度

    场景 正常 不正常
    数据库操作 3k-2w条/秒 3k以下
    文件操作 2w条以上 1w条以下、
    网络操作 比数据库慢

    容易产生性能问题的场景

    1. 查询类:

    数据库查询:数据库查询、数据库连接、插入更新

    Web查询 :http/get/set webservice

    2.计算类

    格式转换(字节与字符互相转换,日期)、

    转换一般用计算器和JavaScript方法。

    3.排序类

    排序、合并连接(依赖于排序)、分组(依赖于排序)


    kettle调优

    1. 设置Rowset

    Rowset是两个步骤之间的缓存(大小可以自己设置)
    如何找到性能瓶颈:观察Rowset,运行ktr文件时观察下面的窗口值(100/0表示输入100条记录,输出0条记录。如果输入远大于输出,就说明这个步骤来不及处理,就是瓶颈。)

    Rowset值的设置: 编辑》设置》杂项》记录集合里的记录数》10000,表示缓存里的最大记录数就是10000

    2. 合理增加索引

    数据库查询:尽可能多的使用相等=判断来筛选数据;如果是等值查询,表就建hash索引;如果是比较查询,就建B树索引

    增加复制数:查询类。多线程,2-8个线程一个步骤。具体自己调整。

    3. 提高Kettle的写入速度

    配置数据库连接:
    useServerPrepStmts = false
    rewriteBatchedStatements = true
    useCompression=true
    defaultFetchSize=10000 ##默认1w

    4. 提高kettle的读取速度

    useServerPrepStmts=true
    cachePrepStmts=true

    5. 设置步骤运行拷贝数

    kettle转换在执行时,每一个步骤可被看成一个带着输入、输出行队列的工作线程,每一个线程是并行执行的。kettles可以同时针对每一个独立步骤手工定义其线程数。右键设置拷贝数。

    6. 设置SPOON 启动内存大小

    在spoon.bat这个启动文件中,配置的有JVM的内存XMX,("%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="- Xms8192m" "-Xmx8192m" "-XX:MaxPermSize=4096m"),默认这个是256M,512M 256M, 其中Xms是指JVM初始分配的堆栈的内存,Xmx是指JVM分配的堆栈的内存 (JAVA代码能涉及到的存储数据变量的内存)最大是多少,所以XMS必须要<= XMX,XX:MaxPermSize,是指JVM给自己分配的非堆栈内存(供虚拟机程序自己开销),一般来说网上参考是最大堆栈内存不超过总内存的3/8有的也说是一半,可以根据需要设置。

    7. 避免抽数的源数据库关键字段索引在SPOON里面失效

    网上搜索了这种明明应该走 但是并没有走索引的情况:
    1. 使用<> (有的时候单独的使用< 或者>的时候也有可能)
    2. like的时候不能确定最前面的字符也就是把’%_’的时候
    3. 单独使用复合索引的非前导列
    4. 表没有分析,字符类型不匹配 发生了显式的或者隐式的转换或者对索引列进行了运算
    5. 使用了 not in 或者 not exist

    8. 减少目的索引

    目的地数据库表的索引太多,这个原因显而易见,因为插入数据的时候会重新更新索引表,索引太多,插入时候会变慢。

    9. 增大commit数量

    插入流程中数据COMMIT过程太频繁,数据插入的COMMIT太频繁也是很影响效率的,20W的数据提交200次和提交20次速度显然是不一样,只要你的设置的内存能暂时容得下插入的数据,COMMIT可以尽量设高一点(kettle有限制不能超过50000)


    kettle中的一些常见问题

    1. 关于kettle中的Java脚本值得注意的地方

    Java script是一行一行执行的,当我们在脚本中使用了判断,而当某一行数据没有符合条件时,脚本中的变量将是保持上一行的值
    正确的做法在Java脚本书写中,补充完整的条件语句,即不要省略esle分支,或者在开头定义xx并赋默认值。如:

    2. moji字符问题

    moji字符无法写入Mysql数据库问题, 在数据库连接高级中写入 set names utf8mb4;

    3.

    相关文章

      网友评论

          本文标题:kettle 知识

          本文链接:https://www.haomeiwen.com/subject/kisfzftx.html