ETL优化

ETL优化

Extract、Transform、Load,对异构数据源进行数据处理。

设立基线标准,根据硬盘、网络传输速度,多测测量得到数据量(m)/时间(s)的比值,找线性关系。建立基线作为调试和优化的依据,避免人为主观判断。例如经过优化后,性能比基线提高了2%。

1. 数据库优化

1.1 数据库配置

配置连接池

优化数据库配置参数

2. SQL优化

2.1  数据库索引

  索引作用在于查询时提高效率,这是以降低插入、修改和删除操作的性能为代价。考虑插入数据前删除索引,插入完成后再创建索引。

2.2 优化查询语句

SQL优化

3.ETL优化

3.1 提高Commit size

  具体数值可以根据性能监控的记录来确定

3.2 尽量不要使用Insert/Update组件

  正常情况下在几百条每秒(对比TableInsert几万的速度)

3.3 减少分组排序组件

  排序和分组的操作会在这一步阻塞KTR的执行,直到接收到前面所有步骤传过来的数据为止,导致ETL的运行时间增长,占用的内存增大。

3.4 调整步骤之间的缓存

  在性能监测时,这也是一个用来找到瓶颈的核心参数。如果某一步的输入和配置的缓存大小接近,但是输出很小,那么这一步就是性能的瓶颈。如果缓存大小配置了10000,但是几乎所有步骤的输入输出都只有很低的一个值,比如50,那么,性能的瓶颈就是输入。

3.5 延迟转化

  很多字段在读入到最后输出,实际上都没有被操作过,开启延迟转化可以让kettle在必要的时候再进行转化。这里的转化是指从二进制到字符串之间的转化,在输入和输出都是文本的时候更为明显。事实上,Select Values在转化的效率上也高于读取时直接转化。

3.6 复制并行处理

在需要并行处理的步骤上,选择Change Number of Copies to Start, 修改这个值为小于机器核心总数的一个值,一般2〜4就可以满足要

3.7 减少步骤的数量

3.8 Select Values慎删除字段

 

4. 其他优化

  • 使用Carte管理KJB和KTR减小内存消耗
  • 使用定时器定时处理
  • 使用集群并行运行
  • 使用数据仓库及缓慢更新进行同步增量更新

 

posted @ 2018-12-14 10:37  aongao  阅读(977)  评论(0编辑  收藏  举报