MaxComputeSql性能调优

摘要: 转载自xiaorui 部分用户(尤其对外输出)使用MaxCompute(原Odps)时,由于对产品的使用层面和执行层面了解程度不同,导致提交的任务执行时间过长、占用了较多集群资源;严重的会导致失败、不仅需要投入支持同学精力协助解决、也影响了用户正常业务。 合并整理部分性能提升方法方

转载自xiaorui

部分用户(尤其对外输出)使用MaxCompute(原Odps)时,由于对产品的使用层面和执行层面了解程度不同,导致提交的任务执行时间过长、占用了较多集群资源;严重的会导致失败、不仅需要投入支持同学精力协助解决、也影响了用户正常业务。 合并整理部分性能提升方法方便支持用户查询和优化Sql,提高效率;部分需要原来手动调优的如mapjoin、ppd谓词下推注意分区位置等原有的调优设置在不断衍进的产品中都已实现了自动化调优、 不同阶段的产品调优参数和细节会有不一致、但是熟悉了调优思路和方法后可以做到举一反三、逐步深入。

一. 整体思路

整体上,调优从底层到sql可以有多个层面的调优,随着产品的不断完善,部分调优已经实现了自动化。如果用户能熟悉常见的调优机制和执行原理,在开发执行sql、业务逻辑和相关参数设置调整来提高性能、可以做到事半功倍。
1. 硬件及操作系统层面调优:包括磁盘I/O调优(多路复用等)、网络调优(缓冲区大小、连接数放大等)、内存调优(虚拟内存设置、内存控制等);
2. 分布式计算平台及存储层面调优:存储格式设置、压缩格式设置、RPC调用设置、连接数控制设置、调度机制设置、block及分片设置、执行资源设置等;
3. 业务逻辑层面及参数调整,除整体执行的调优外,对不同类型的操作进行参数级别的调优、针对聚合、连接、一读多写等修改为不同的sql或者设置不同的参数可以极大的提高性能;
4. Sql层面及应用层面的调优,重构sql写法、合并sql,大小表连接修改为mapjoin等,在odps2.0中已处理了自动mapjoin等、目前未升级用户及对外输出的用户仍需要修改sql来支持;
不同层面调优及优缺点见下:

图片描述

二. 场景及调优列举

1. 大小表关联修改为mapjoin,增加Mapjoin hint

方法及注意事项:

所有指定的小表占用的内存总和不超过 512M
多表Join时,最左边的两个表,不能同时是 Mapjoin 的表
不同的关联方式(left/right/inner),对表的顺序有要求
left outer join 左表必须为大表
right outer join 右表必须为大表
inner join 左右表皆可为大表
full outer join 不能直接使用 mapjoin,修改为mapjoin + union all
最新的发布版本上已经支持了automapjoin,可以根据join表的大小自动把小表转为mapjoin,对部分没有显示增加hint的sql和中间结果为小表的sql进行自动优化

2 数据倾斜

数据倾斜表现:
任务进度长时间维持在99%,查看监控,只有少量 reduce 子任务未完成
单一 reduce 记录数与平均记录数差异多大,最长时长远大于平均时长
优化方法及注意事项:

聚合倾斜,设置参数:set odps.sql.groupby.skewindata=true
关联倾斜,设置参数:set odps.sql.skewinfo=tab1:(col1,col2)[(v1,v2),(v3,v4),…|(v1,v2),(v3,v4),…];set odps.sql.optimize.skewjoin=true
关联倾斜,同时大小表,考虑修改为mapjoin
具体问题具体分析:因为聚合key值null引起的数据倾斜,可以修改null为随机值,打撒数据分发到不同的instance执行

3. Map 端一读多写

场景及优化:
多次读取同一张物理表,执行不同操作,写入多张表;考虑与multiinsert 的联系和区别,是否合适做修改
建立临时表,实现临时表的并行化
注意事项:

优点:大大节省了集群的计算资源和磁盘I/O资源
缺点:写的次数非常多时,可能导致性能问题,影响任务整体执行效率

4 分区裁剪

场景:事实表很多分区,数据量大
优化:避免全表扫描,减少资源浪费;关注分区裁剪有无生效,见下注意事项:从表设计、使用上注意,尽量让分区裁剪生效
注意事项:

过滤条件中的分区列上有UDF 则分区裁剪生效
表关联时关联条件中包含分区列:
出现在 on 条件中,分区裁剪生效
出现在 where 条件中,主表分区裁剪生效,其余可能失败

5. SQL 合并

场景:
1. 多次读取相同的数据且源数据数据量大、性能差、费用高
2. 统一业务流程前后关联sql或统计多种指标、筛选不同数据的sql
优化方法及注意事项:通过修改sql,合并为1个sql执行,尽量减少对相同数据源的读取次数,达到一次扫描计算多个基础统计量,一次扫描,处理多个筛选条件;以下调整列举:

CASE … WHEN…:合并相同数据源的不同子查询的关联
动态分区&多路插入等:将满足不同条件的会员统计信息插入到不同的表或表分区中去
前后流程sql合并为1个sql执行

6 使用窗口函数优化SQL

窗口函数:
1. 可以进行灵活的分析处理工作
2. 使用 partition by 开窗,order by 排序
3. 可以用 rows 指定开窗范围
4. 丰富的开窗函数

优化及注意事项:合理使用窗口函数,可以减少Join次数,提高运行性能;不用窗口函数处理需要写复杂sql的功能,用开窗函数可以高效执行得到预期结果。

原文链接

干货好文,请关注扫描以下二维码:

图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为卡槽打不开怎么办_17500元!华为5G折叠手机刷屏,有人焦虑连夜开会…

本文经授权转载自澎湃新闻( ID:thepapernews )华为发布首款5G折叠屏手机Mate X,售价1.75万元。2月24日西班牙巴塞罗那华为发布了首款5G折叠屏手机—— 华为Mate X机身尺寸为8英寸不对称外翻折叠这款国产黑科技一出现立刻引发围观登上热搜那它究竟有啥特别的&#xf…

MaxCompute访问TableStore(OTS) 数据

摘要: MaxCompute作为阿里云大数据平台的核心计算组件,承担了集团内外大部分的分布式计算需求。 免费开通大数据服务:https://www.aliyun.com/product/odps 前言 MaxCompute作为阿里云大数据平台的核心计算组件,承担了集团内外大部…

编程吸金榜:你排第几?网友神回应了 !

作为全球知名招聘求职网站Indeed,最近发布了2019年度最佳工作榜单,公布了2019年的最佳行业领域及工作岗位薪酬,在全行业的榜单中,跟程序员相关的岗位有9个!对此,大家纷纷留言表示程序员或成最大赢家&#x…

快速开发工作流_02_集成在线流程设计器

接上一篇:快速开发工作流_01_简单流程案例https://gblfy.blog.csdn.net/article/details/102881983 文章目录七、流程设计器 modeler7.1. 导入war7.2. 重写两个配置类7.3. 添加国际化文件7.4. 资源文件配置7.5. 项目源码七、流程设计器 modeler 7.1. 导入war 解压…

electron 打包把node代理服务打包进去_专题:让C++给node做技术加持(三)编译electron本地模块踩坑记

欢迎来到我的专题文章:《让C给node做技术加持》系列。更多内容,持续更新中,欢迎关注。往期目录:专题:让C给node做技术加持(一)环境搭建,项目运行专题:让C给node做技术加持(二)-NodeJs调用C方法上…

云无边界,阿里云混合云数据同步发布

摘要: 针对不同数据库间数据实时同步难的问题,日前,阿里云宣布推出混合云数据同步一站式解决方案,便于广大云产品用户实现实时数据同步的混合云支持,更为方便的是,该功能让本地Oracle也能实现与云上数据库的…

fs react 使用 保存文件_入门TypeScript编写React

使用 create-react-app 开启 TypeScriptCreate React App 是一个官方支持的创建 React 单页应用程序的CLI,它提供了一个零配置的现代构建设置。当你使用 Create React App 来创建一个新的 TypeScript React 工程时,你可以运行:$ npx create-r…

快速开发工作流_03_集成在线流程设计器_内置用户免登录

接上一篇:快速开发工作流_02_集成在线流程设计器 https://gblfy.blog.csdn.net/article/details/103676784 文章目录八、内置用户免登录8.1. 定位url-config.js8.2. 替换url8.3. 添加配置类AdminRemoteAccountResource8.4. 启动类排除权限校验8.5. 码云地址八、内置…

强推!阿里数据科学家一次讲透数据中台

戳蓝字“CSDN云计算”关注我们哦!来源 | 技术领导力社区编辑 | Emma阿里大数据和人工智能科学家 行在,阿里公共数据平台负责人 罗金鹏,在云栖大会、Data Tech等大会中分享到:阿里的“双中台ET”数字化转型方法论及成果&#xff0c…

关于增强学习你应该了解的五件事儿

摘要: 本文主要是讲解了机器学习中的增强学习方法的基本原理,常用算法及应用场景,最后给出了学习资源,对于初学者而言可以将其作为入门指南。 强化学习(Reinforcement Learning)是当前最热门的研究课题之一…

SpringBoot聚合项目总结

文章目录一、聚合项目架构二、依赖传递图解2.1. 常见场景2.2. 企业场景三、结构设计原则3.1. 模块层次清晰3.2. 模块之间耦合度低3.3. 功能互不影响3.4. 定位问题效率高3.5. 灵活易扩展四、架构设计优点4.1. 统一规范4.2. 版本统一管理4.2.1. 模块版本统一管理4.2.2. 依赖版本统…

容器精华问答 | 虚拟机和容器的区别是什么?

戳蓝字“CSDN云计算”关注我们哦!云计算的发展日新月异,新技术层出不穷,尤其容器技术自2013年Docker容器问世以来一路高歌猛进红遍大江南北,与虚拟机相比,容器更显优势,有着更轻量、更快捷、占用资源更少&a…

战神笔记本电脑自带access吗_笔记本电脑卡顿不要急着换,这几个方法,让你的电脑流畅爆表...

电脑现在无论是学生还是上班族都成为了不可或缺的一个东西,笔记本电脑更是成为很多人的宠爱,方便携带。但是很多人的电脑都会面临一个问题,就是笔记本电脑使用没多久就开始卡顿,越来越不流畅。 …

一文看清深圳云栖阿里云重磅产品发布

摘要: 成立九年之后,阿里云不再仅仅是提供计算、存储、网络、安全。 事实上,我们每一天都有新功能在发布。 本文就和大家梳理一下,阿里云此次深圳云栖在云计算、大数据、人工智能、物联网方面的技术产品进展。 成立九年之后&#…

工作流实战_23_flowable 任务监听器 事件监听器

项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base 视频讲解地址 https://www.bilibili.com/video/av79328344 监听器 任务监听器 针对userTask节点 事件监听器 针对任意节点 由于实际情况下我们会在节点会动态调用业务系统的接口去改变业务单据的状态…

pcb设计等长线误差_17种元器件PCB封装图鉴,美翻了(附PCB元件库)

元器件封装的构建是PCB设计中的一个重要环节,小小的一个错误很可能导致整个板子都不能工作以及工期的严重延误。常规器件的封装库一般CAD工具都有自带,也可以从器件原厂的设计文档、参考设计源图中获取。封装名称与图形如下No.1晶体管No.2晶振No.3电感No…

云计算风起云涌,超融合恰逢其时!

戳蓝字“CSDN云计算”关注我们哦!“关于超融合市场,确实有一些声音。比如说市场很小,着手做这个业务方向会不会意味着未来堪忧?是不是没有前途?”深信服云BG总经理宋锐打趣说道。“这个问题,要站在客户的角…

Quick BI助力云上大数据分析---深圳云栖大会

摘要: 在3月29日深圳云栖大会的数据分析与可视化专场中,阿里云产品专家陌停对大数据智能分析产品 Quick BI 进行了深入的剖析。大会现场的精彩分享也赢得观众们的一直认可和热烈的反响。 大数据分析之路的挑战与期望 阿里巴巴作为一家大数据公司&#xf…

怎么添加一个程序集_门店小程序,微信小程序怎么添加店铺

现今随着互联网发展,越来越多选择网上购物代替实体店购物,微信作为最多人使用的社交软件,他的商机也被许多企业商家发展,进入微信分销小程序购物是现在最流行的购物方式,驱使很多实体店也纷纷加盟进驻门店分销小程序&a…

阿里云Quick BI——让人人都成为分析师

摘要: 在3月29日深圳云栖大会的数据分析与可视化专场中,阿里云产品专家潘炎峰(陌停)对大数据智能分析产品 Quick BI 进行了深入的剖析。大会现场的精彩分享也赢得观众们的一直认可和热烈的反响。 Quick BI诞生于阿里巴巴集团自身对…