ETL优化html
Extract、Transform、Load,对异构数据源进行数据处理。数据库
设立基线标准,根据硬盘、网络传输速度,多测测量获得数据量(m)/时间(s)的比值,找线性关系。创建基线做为调试和优化的依据,避免人为主观判断。例如通过优化后,性能比基线提升了2%。缓存
1. 数据库优化网络
1.1 数据库配置性能
配置链接池优化
优化数据库配置参数调试
2. SQL优化orm
2.1 数据库索引htm
索引做用在于查询时提升效率,这是以下降插入、修改和删除操做的性能为代价。考虑插入数据前删除索引,插入完成后再建立索引。blog
2.2 优化查询语句
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减少内存消耗
- 使用定时器定时处理
- 使用集群并行运行
- 使用数据仓库及缓慢更新进行同步增量更新