TDH sql及plsql的调优

3.1.1 表类型的优化
3.1.2表分桶分区的优化
3.1.3 临时表的使用
3.2.1 列裁剪
3.2.2 条件下压
3.2.3 DISTINCT的优化
3.2.4 null处理优化
3.2.5 小文件过多的优化
3.2.6 范围分区表merge into的优化

3 PLSQL调优
3.1 表的优化
3.1.1 表类型的优化文本表主要在数据的导入导出中作为过度表使用,支持insert和load操作,支持分区分桶,一般对于跑批,我们选择ORC格式的表,ORC为列式存储,通常压缩比为3~8,同时具有轻量级的索引,包括minmaxFilter和BloomFilter,只支持insert,不支持load,如果该表需要进行事务操作,则需使用ORC事务表,3.1.2表分桶分区的优化
此处优化针对于ORC表:
如果数据量达到百万级,则需对表进行分桶,分桶字段尽量选择离散度较高的列,以避免造成 Bucket的大小过于悬殊,通常如果为ORC表一个桶数据量为压缩前200M,如果为ORC事务表一个桶数据量为压缩前100M,同时分桶数最好为质数,分桶的数量在建表时确定以后就不可更。如果表数据量较大还可进行分区,单值分区或范围分区。3.1.3 临时表的使用
对于复杂的多表关联,建议将中间结果集落入物理临时表中,此操作能简化sql解析,理清顺序,对于一些复杂的子查询,需将中间结果落地。
.2 SQL优化
3.2.1 列裁剪
由于ORC为列式存储,对于宽表而言,select 字段 from xxx 能有效减少执行过程中的shuffle量,如果某一列重复数据特别多,在保证查询结果不变的情况下 使用group by去重。3.2.2 条件下压
对于某些已知条件的过滤如果能在join前过滤,则先过滤再去join,如果过滤字段为分区字段,还可进行Partition过滤来减少数据量。尽可能的将小表放在join的左端。3.2.3 DISTINCT的优化
对于COUNT(DISTINCT cust_isn)涉及 DISTINCT 的操作是由 Reduce Task 负责完成的,如果 Distinct Value 比较多,则单个 Reduce就很可能会成为性能瓶颈。所以在执行此类操作之前,我们可以利用 GROUP BY先做去重,然后再进行统计,以提高 SQL的执行效率。3.2.4 null处理优化
对于join key含有大量null值,如果不对其做特殊处理,则有可能出现关联倾斜,如:3.2.4 null处理优化
对于join key含有大量null值,如果不对其做特殊处理,则有可能出现关联倾斜,如:
Select a.id,b.name
from a left join b
on a.id=b.id
如果a.id存在大量null值 则拆分为Select a.id,b.name
from a left join b
on a.id=b.id
where a.id is not null
union all
Select a.id,null
from a
where a.id is null或者
Select a.id,b.name
from a left join b -- NVL返回值为表达式2的值,否则返回表达式1的值。 该函数的目的是把一个空值(null)转换成一个实际的值
on nvl(a.id,uniq())=b.id3.2.5 小文件过多的优化
如对同一张表进行多次CURD操作,则会导致底层存储文件过多,则可控制合理的map,reduce个数,设置合理参数ngmr.partition.automerge,mapred.reduce.tasks3.2.6  范围分区表merge into的优化当目标表为范围分区表时,如果只需对某一个分区内的数据进行merge,常规的merge 语句执行时,inceptor会扫描全表,导致效率低下,甚至由于单个task处理数据量过大而报错,这时可将merge语句改为 merge into (select * from default.xxx where date=‘日期’) 来告诉inceptor将要对哪些数据做merge。

TDH sql及plsql的调优相关推荐

  1. sql索引调优_使用内置索引利用率指标SQL Server索引性能调优

    sql索引调优 描述 (Description) Indexing is key to efficient query execution. Knowing what indexes are unne ...

  2. 快速定位隐蔽的sql性能问题及调优(r5笔记第38天)

    在前几天,有个开发同事问我一个问题,其实也算是技术救援,他说在有个job数据处理的频率比较高,在测试环境中很难定位出在哪有问题,而且速度也还能接受,但是在生产环境中总是会慢一些,希望我能在测试环境中协 ...

  3. SQL优化(数据库调优)

    1.索引失效的10种场景 必记 不满足最左匹配原则 使用了select * 索引列上有计算 索引列用了函数 字段类型不同 like左边包含% 列对比 使用or关键字 not in 和 not exis ...

  4. 如何写出高性能的SQL语句,及如何进行SQL性能分析与调优

    1.尽量使用索引 索引是数据库中重要的存储结构,对于查询耗时影响甚大,应避免导致索引无效的sql语句 索引失效的场景: 1.缺失索引 2.where 条件中的or 3.where条件表字段使用函数 4 ...

  5. azure云数据库_Azure SQL数据库的性能调优

    azure云数据库 With the latest versions of Azure SQL database, Microsoft has introduced a number of new m ...

  6. SQL Server 2008+ 性能调优

    目录 机器指标 机器处理时间(Machine Processor TIme) 解释 指导值 另请检查 可能的解决方案 平均Cpu队列长度(Avg.Cpu Queue Length) 等效性能计数器 解 ...

  7. sql如何遍历几百万的表_Oracle PL/SQL调优技巧分享

    原创作者:如人饮水冷暖自知 责任编辑:AcDante 前言 开门见山,今天和大家聊聊如何对PL/SQL代码进行优化,以及如何编写高效的PL/SQL代码,如果您是开发DBA,或者您是数据库开 发人员,对 ...

  8. SQL Server调优系列玩转篇(如何利用查询提示(Hint)引导语句运行)

    前言 前面几篇我们分析了关于SQL Server关于性能调优的一系列内容,我把它分为两个模块. 第一个模块注重基础内容的掌握,共分7篇文章完成,内容涵盖一系列基础运算算法,详细分析了如何查看执行计划. ...

  9. 11g新特性-自动sql调优(Automatic SQL Tuning)

    11g新特性-自动sql调优(Automatic SQL Tuning) 在Oracle 10g中,引进了自动sql调优特性.此外,ADDM也会监控捕获高负载的sql语句. 在Oracle 11g中, ...

最新文章

  1. matlab gui数据类型,MatLab GUI 数据传递
  2. 厦门大学计算机科学每年的保研率是多少,厦大保研率大曝光,高达30%!研厦党该何去何从?...
  3. 去除RNA-seq数据批次效应
  4. 会计核算方法的组成及联系
  5. Java 8 获取某天最大(23:59:59)最小(00:00:00)时间
  6. python decorator. decorator_Python装饰器(decorator)
  7. 关于tomcat出现闪退问题
  8. 在centos6中安装2.4版本的HTTPd
  9. 数据库:MySQL常见的设计规范误区
  10. 自定义关键字_Java中的自定义异常
  11. STM32烧录HEX、BIN文件,使用ST-LINK
  12. 小于等于0_从0开始学ARMARM汇编指令其实很简单
  13. 《云计算:原理与范式》一3.4 SaaS范式面临的挑战
  14. MySQL 数据类型、字符集编码、存储引擎
  15. 安装zabbix步骤
  16. 计算机网络线接法,网线水晶头接法图解 一分钟学会网线怎么接
  17. 团队环境搭建:MTK平台,PTK5.1、Supernova编译环境配置
  18. Unity开发者的C#内存管理
  19. 误人子弟的网络,谈谈HTTP协议中的短轮询、长轮询、长连接和短连接
  20. 音质好的TWS耳机有哪些?音质最好的TWS耳机推荐

热门文章

  1. 复制文件服务器启动,GPO启动脚本不复制文件
  2. b级计算机机房标准,B级电子信息系统机房技术要求(国标GB50174–2008)
  3. RabbitVCS:ubuntu下svn可视化工具的安装和使用
  4. python遍历excel单元格内容_如何遍历excel文件获取单元格内容并在websi上以表单形式编写...
  5. iPhone 隐藏底部 “Dock栏 ”教程
  6. [Lua]字符串及字符串匹配
  7. 我在网吧上网用的QQ给好友狂发病毒
  8. 博客系统 - 数据库设计(二)
  9. 2021年焊工(高级)新版试题及焊工(高级)证考试
  10. express学生管理系统、前后端不分离(十一)