What steps do you take to determine the bottleneck of a slow running ETL process?

如果ETL进程运行较慢,需要分哪几步去找到ETL系统的瓶颈问题。

答:ETL系统遇到性能问题,运行很慢是一件较常见的事情,这时要做的是逐步找到系统的瓶颈在哪里。

首先要确定是由CPU、内存、I/O和网络等产生的瓶颈,还是由ETL处理过程产生的瓶颈。

如果环境没有瓶颈,那么需要分析ETL的代码。这时,我们可以采用排除的方法,需要隔离不同的操作,并分别对它们进行测试。如果是采用纯手工编码方式的ETL处理,隔离不同的操作要麻烦一些,这时需要根据编码的实际情况来处理。如果是采用ETL工具的话,目前的ETL工具应该都有隔离不同处理的功能,隔离起来相对容易一些。

分析最好从抽取操作开始,然后依次分析各种计算、查找表、聚集、过滤等转换环节的处理操作,最后分析加载操作。

实际的处理中,可以按照下面的七个步骤来查找瓶颈。

1.隔离并执行抽取查询语句。

先将抽取部分隔离出来,去掉转换和交付,可以将数据直接抽取到文件中。如果这一步效率很差,基本确定是抽取SQL的问题。从经验来看,未经调优的SQL是一个最常见的导致ETL效率差的原因。如果这步没有问题进入第二步。

2.去掉过滤条件。

这一条是针对全抽取,然后在ETL处理中进行过滤的处理方式而言。在ETL处理中做过滤处理有时会产生瓶颈。可以先将过滤去掉,如果确定为这个原因,可以考虑在抽取时进行数据过滤。

3.排除查找表的问题。

参照数据在ETL处理过程中通常会加载到内存中,目的是做代码和名称的查找替换,也称查找表。有时查找表的数据量过大也会产生瓶颈。可以逐个隔离查找表,来确定是否是这里出现问题。注意要将查找表的数据量降到最低,通常一个自然键一个代理键就可以,这样可以减少不必要的数据I/O。

4.分析排序和聚集操作。

排序和聚集操作都是非常费资源的操作。对这部分隔离,来判断是否因为它们引起性能问题。如果确定是因为这个,需要考虑是否可以将排序和聚集处理移出数据库和ETL工具,移到操作系统中来处理。

5.隔离并分析每一个计算和转换处理。

有时转换过程中的处理操作也会引起ETL工作的性能。逐步隔离移除它们来判断哪里出了问题。要注意观察像默认值、数据类型转换等操作。

6.隔离更新策略。

更新操作在数据量非常大时是性能非常差的。隔离这部分,看看是否这里出了问题。如果确定是因为大批量更新出了性能问题。应该考虑将insert、update和delete分开处理。

7.检测加载数据的数据库I/O。

如果前面各部分都没有问题,最后需要检测是目标数据库的性能问题。可以找个文件代替数据库,如果性能提高很多,需要仔细检测目标数据库的加载过程中的操作。例如是否关闭了所有的约束,关闭了所有的索引,是否使用了批量加载工具。如果性能还没有提高,可以考虑使用并行加载策略。

ETL工作流缓慢原因查找方法的更多相关文章

  1. WebDriver元素查找方法摘录与总结

    WebDriver元素查找方法摘录与总结 整理By:果冻迪迪 selenium-webdriver提供了强大的元素定位方法,支持以下三种方法. • 单个对象的定位方法 • 多个对象的定位方法 • 层级 ...

  2. vue 首次加载缓慢/刷新后加载缓慢 原因及解决方案

    # vue 首次加载缓慢/刷新后加载缓慢 原因及解决方案 最近做项目发现一个问题,页面每次刷新后加载速度都非常慢,20s左右,在开发环境则非常流畅,几乎感觉不到,本文参考望山的各种方案优化 1,关闭打 ...

  3. jQuery 的选择器常用的元素查找方法

    jQuery 的选择器常用的元素查找方法 基本选择器: $("#myELement")    选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myE ...

  4. 浅析jQuery中常用的元素查找方法总结

    本篇文章是对jQuery中常用的元素查找方法进行了详细的总结和介绍,需要的朋友参考下   $("#myELement") 选择id值等于myElement的元素,id值不能重复在文 ...

  5. sap 三代出口(BADI)的查找方法

    sap 三代出口(BADI)的查找方法 对于根据事务代码查找对应的BADI,网上介绍的方法很多,但总结下来无非就两种方法,在此把它记录下来,方便以后自己查阅了.(1)通过SE24,输入CL_EXITH ...

  6. 【转】SharePoint工作流中常用的方法

    SharePoint中使用工作流对象模型. SharePoint工作流对象模型在Microsoft.SharePoint.Workflow命名空间.你可以利用此对象模型对你的工作流进行编程.你可以启动 ...

  7. linux上TCP connection timeout的原因查找

    linux上TCP connection timeout的原因查找 好久没有写文章了, 今天解决了一个网络连接超时的问题, 记录以备查看. 最近在线上nginx经常出现输出connection tim ...

  8. jquery元素查找方法集锦

    jQuery常用的元素查找方法总结 $("#myELement")    选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到 ...

  9. <1>Linux日志查找方法

    Linux日志查找方法 适用于测试,开发,运维人员,用来查找Linux服务器问题的一般方法,比较实用,如果有更好的办法可以一块讨论,欢迎大神们来指导哈!!! 进入正题 第一步.通过Xshell登录服务 ...

随机推荐

  1. SpringCloud初体验:四、API GateWay 服务网关

    网关服务很多,比如:Zuul.Kong.spring cloud gateway ……, 这里不纠结哪种性能好,本次体验是用的 spring cloud gateway 更多网关比较可以了解这篇文章: ...

  2. GridView 绑定数据的常用指定格式。

    形式 语法 结果 注释 数字 {0:N2} 12.36   数字 {0:N0} 13   货币 {0:c2} $12.36   货币 {0:c4} $12.3656   货币 "¥{0:N2 ...

  3. ckplayer的Error #2033:Can not call javascript:ckstyle()解决

    在我们添加多个视频的时候,就会出现这个报错:Error #2033:Can not call javascript:ckstyle(); 但是也不是所有的浏览器都不能正常运行,我这边就是IE10不能正 ...

  4. hadoop学习day3 mapreduce笔记

    1.对于要处理的文件集合会根据设定大小将文件分块,每个文件分成多块,不是把所有文件合并再根据大小分块,每个文件的最后一块都可能比设定的大小要小 块大小128m a.txt 120m 1个块 b.txt ...

  5. 关于RDS for mysql中导入数据库set global event_scheduler =1 需要更多超级权限

    关于RDS中导入数据库set global event_scheduler =1 需要更多超级权限 报错提示 其实这个意思是 让mysql自动启动 计划任务 如果在 命令行下 查询  SHOW VAR ...

  6. 《OpenCL异构并行编程实战》补充笔记散点,第五至十二章

    ▶ 第五章,OpenCL 的并发与执行模型 ● 内存对象与上下文相关而不是与设备相关.设备在不同设备之间的移动如下,如果 kernel 在第二个设备上运行,那么在第一个设备上产生的任何数据结果在第二个 ...

  7. Go语言优势与劣势

    Go语言的优势: 1.脚本化的语法:开发效率高,容易上手 2.静态类型+编译型,程序运行速度有保障:静态类型+编译型语言相对于动态类型+解释型语言的效率高 3.原生的支持并发编程:降低开发.维护成本/ ...

  8. A configuration error occurred during startup.Please verify the preference filed with the prompt:Connect to VM

    1. 检查JDK,及Tomcat是否正确可用.2. Tomcat,myeclipse使用的是不是同一个jdk.3. 检查系统的防火墙是不是阻止了MyEclipse主程序访问网络.

  9. vlc相关命令行设置

    1:改变VLC模块参数   http://tianxiaoma.blog.51cto.com/1501174/309519 ====================================== ...

  10. tomcat没有发布maven项目依赖的本地jar包

    建立springMVC的maven项目,平时使用的jar包都是在pom.xml文件配置依赖关系, maven会自动从仓库中下载,这样使用tomcat部署发布都没有问题.但有时我们需要使用maven仓库 ...