zoukankan      html  css  js  c++  java
  • 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减小内存消耗
    • 使用定时器定时处理
    • 使用集群并行运行
    • 使用数据仓库及缓慢更新进行同步增量更新
  • 相关阅读:
    Windows Console 程序中定时器的使用
    AT91SAM7SE应用 IRQ
    AT91SAM7SE应用 PIT 周期中断(1ms)
    AT91SAM7SE应用 UART
    Modelsim图像处理算法的仿真——图像数据操作
    按照一定的间隔,从视频中截图并保存(OpenCV)
    MacBook Pro下关闭全局网络代理
    jmeter的HTTP取样器设置重连的次数
    【C#】比较 Random 与 RandomNumberGenerator 生成随机字符串
    KendoGrid基础
  • 原文地址:https://www.cnblogs.com/aongao/p/10116283.html
Copyright © 2011-2022 走看看