如在上篇文章《ETL调优的一些分享(上)》中已介绍的,ETL是构建数据仓库的必经一环,它的执行性能对于数据仓库构建性能有重要意义,因此对它进行有效的调优将十分重要。ETL业务的调优可以从若干思路开展,上文我们已经介绍了其中三点,本文我们将再分享如下几点建议。

  • 减少不必要的事务表的使用

  • 减少事务性操作的窗口时间

  • 从最影响总体性能的case开始分析

  • 步骤迭代,直至最优

减少不必要的事务表的使用

由于ORC事务表读取和操作较慢,为确保执行效率,对于业务中不涉及事务操作的表,建议使用普通ORC表,而非ORC事务表。另外,必要时建议手动进行Major compact,可以减少因Delta文件过多导致的查询速度慢的问题。

Case Study:

该案例中的业务人员将此语句中临时表test_transaction_tmp建成了事务表。但是分析业务发现,test_transaction_tmp表仅仅进行了insert into和查询操作,并未进行update/delete/merge等事务性操作,完全可以用普通ORC表替代。替代后的读取速度会比事务ORC表快,并会减少因事务性操作带来的干扰。

减少事务性操作的窗口时间

Inceptor的事务性实现是基于表级锁,而非行级锁。所以在高并发业务场景下,减少事务性操作的互斥区域的执行时间就很重要。优化业务性能时应该优先考虑这部分的时间。

Case Study:SQL同上节。

由上述SQL可见,对于事务表test_transaction_target的事务操作,从语句“delete from default.test_transaction_target where 1=1;”开始,拿到表test_transaction_target的锁,直至commit语句执行完才会释放。所以高并发场景下就会遇到类似这种互斥区域带来的串行问题。为了减少因事务性功能的互斥实现导致的串行问题影响,需要重点优化从delete from语句开始,到commit语句结束,此窗口的SQL执行总时间,减少因串行带来的影响。

从最影响总体性能的Case开始分析

处理了前五步(包括上文的三步)的影响因素后,接下来对执行依然很慢的业务,需要从耗时的业务开始进行case by case的迭代分析。

首先通过Explain检查执行计划的合理性。如查看过滤下推是否成功,Join顺序是否合理等。对于过滤下推的检查,若处于未被Inceptor优化覆盖的场景,可通过适当手工修改SQL解决。Join顺序的问题,在之前收集的数据特征的基础上,判断Join顺序是否合理,如大表和大表先Join即为不合理的情况。对于此类情况,可以考虑enable CBO来统一解决Join顺序问题。另外,如果在多表Join的案例中发现Join过程较慢,并发度不高,需要考虑是否应该disable MapJoin。一般来说,大表很大时,为节省Shuffle effort,优先默认使用MapJoin。对于中小表同多个小表Join,为提升并发度,减少MapJoin的串行执行影响,可以考虑关掉autoconvert开关。

其次,确定执行计划无误之后,可以进一步通过jstack观察执行热点,进一步定位性能瓶颈。

迭代步骤,直至最优

不断迭代上步,参考语句的性能分析(例如观察Inceptor的4040界面),发现性能瓶颈并解决。直至总体性能满足要求。

总结

我们通过上次和本次两篇文章分享了一些关于ETL调优的经验想法,这些都是从生产实施实践中所总结出的,希望在提升数仓构建的整体效率的过程中,各个读者能从这些思路获得帮助。

感谢原文作者的分享,传送门:http://www.transwarp.io/news/detail?id=175

ETL调优的一些分享(下)(转载)的更多相关文章

  1. ETL调优的一些分享(上)(转载)

    ETL是构建数据仓库的重要一环.通过该过程用户将所需数据提取出来,并按照已定义的模型导入数据仓库.由于ETL是建立数据仓库的必经过程,它的效率将影响整个数据仓库的构建,因此它的有效调优具有很高的重要性 ...

  2. 老大难的GC原理及调优,这下全说清楚了

    概述 本文介绍GC基础原理和理论,GC调优方法思路和方法,基于Hotspot jdk1.8,学习之后将了解如何对生产系统出现的GC问题进行排查解决 阅读时长约30分钟,内容主要如下: GC基础原理,涉 ...

  3. Spark调优秘诀——超详细

    版权声明:本文为博主原创文章,转载请注明出处. Spark调优秘诀 1.诊断内存的消耗 在Spark应用程序中,内存都消耗在哪了? 1.每个Java对象都有一个包含该对象元数据的对象头,其大小是16个 ...

  4. 《Tomcat和JVM的性能调优你真的学会了吗?》总结篇

    Tomcat性能调优: 找到Tomcat根目录下的conf目录,修改server.xml文件的内容.对于这部分的调优,我所了解到的就是无非设置一下Tomcat服务器的最大并发数和Tomcat初始化时创 ...

  5. jvm系列(六):Java服务GC参数调优案例

    本文介绍了一次生产环境的JVM GC相关参数的调优过程,通过参数的调整避免了GC卡顿对JAVA服务成功率的影响. 这段时间在整理jvm系列的文章,无意中发现本文,作者思路清晰通过步步分析最终解决问题. ...

  6. Oracle调优之看懂Oracle执行计划

    @ 目录 1.文章写作前言简介 2.什么是执行计划? 3.怎么查看执行计划? 4.查看真实执行计划 5.看懂Oracle执行计划 5.1 查看explain 5.2 explain执行顺序 5.3 访 ...

  7. JVM调优之---一次GC调优实战

    某系统反馈『性能抖动,响应时间会突然飙高,TP999 MAX会到3000+』,初步怀疑是JVM FULL GC导致的 STW,观察FULL GC日志默认的JVM参数: -Xms4096m -Xmx40 ...

  8. 一文读懂Java GC原理和调优

    概述 本文介绍GC基础原理和理论,GC调优方法思路和方法,基于Hotspot jdk1.8,学习之后将了解如何对生产系统出现的GC问题进行排查解决 阅读时长约30分钟,内容主要如下: GC基础原理,涉 ...

  9. 一份 Tomcat 和 JVM 的性能调优经验总结!拿走不谢

    Tomcat性能调优 找到Tomcat根目录下的conf目录,修改server.xml文件的内容.对于这部分的调优,我所了解到的就是无非设置一下Tomcat服务器的最大并发数和Tomcat初始化时创建 ...

随机推荐

  1. 管理Windows上的路由表

    路由器获取目录帮助手册: route /? 修改路由的时候最高以管理员运行cmd程序 默认路由只是临时生效的,只要管理员禁用在启用网卡,默认路由就消失了(重启计算机默认路由也会消失),可以在后面添加一 ...

  2. 深度实战玩转算法, Java语言7个经典应用诠释算法精髓

    深度实战玩转算法,以Java语言主讲,通过7款经典好玩游戏,真正将算法用于实际开发,由算法大牛ACM亚洲区奖牌获得者liuyubobobo主讲,看得见的算法,带领你进入一个不一样的算法世界,本套课程共 ...

  3. Java安全之初探weblogic T3协议漏洞

    Java安全之初探weblogic T3协议漏洞 文章首发自安全客:Java安全之初探weblogic T3协议漏洞 0x00 前言 在反序列化漏洞里面就经典的还是莫过于weblogic的反序列化漏洞 ...

  4. MD5,BASE64Encoder加密

    package com.cn.peitest; import java.io.UnsupportedEncodingException; import java.security.MessageDig ...

  5. ArrayList的删除姿势你都知道了吗

    引言 前几天有个读者由于看了<ArrayList哪种遍历效率最好,你真的弄明白了吗?>问了个问题普通for循环ArrayList为什么不能删除连续重复的两个元素?其实这个描述是不正确的.正 ...

  6. JavaSwing 船只停靠管理可视化(三)

    JavaSwing 船只停靠管理可视化(一) JavaSwing 船只停靠管理可视化(二) JavaSwing 船只停靠管理可视化(三) JavaSwing 船只停靠管理可视化(四) JavaSwin ...

  7. java 数字和日期处理

    static int abs(int a) 返回 a 的绝对值 static long abs(long a) 返回 a 的绝对值 static float abs(float a) 返回 a 的绝对 ...

  8. 常用的linux指令

    a.cd /home 进入 '/ home' 目录' b.cd .. 返回上一级目录 c.cd ../.. 返回上两级目录 d.mkdir dir1 创建一个叫做 'dir1' 的目录' e.mkdi ...

  9. 2020DevOps状态报告——平台模型:扩展DevOps的新方法

    平台模型是我们在这个领域看到越来越多的方法,它源于负责产品或服务的端到端交付的产品团队的理念.如果只应用于单一的产品,或者几个产品,它的效果很好. 但如果有数百种产品或服务,把一个产品团队用于这些产品 ...

  10. Spring(3) --事务,隔离级别,设计模式

    什么是事务?事物的四大特性? 事务是指单个逻辑工作单元执行的一系列操作(ACID),这些操作要么全部执行,要么全部不执行,是不可中断的. (1)原子性(Atomicity)是指事务所有操作是不可中断的 ...