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. C++拾遗(五)语句相关
  2. 理解Linux中断 (2)【转】
  3. java 循环赛问题,网球循环赛思路 - 分治法求解(无代码)
  4. 合肥学院计算机原理,合肥学院计算机组成原理实验三-20210415130709.docx-原创力文档...
  5. JavaWeb学习之路——SpringBoot整合Mybatis(二)
  6. kali linux 2019教程,[教程]KALI LINUX 2.0 2019 更新国内源
  7. 29 _react-router说明
  8. Android SDK中tools详解
  9. python多进程 保活_老板,你这个爬虫保活吗?
  10. c语言int grade 5,C语言补考!!!
  11. 小程序新能力微信扫码直接跳转小程序
  12. Android的Service组件
  13. java有哪些字体_java字体有哪些
  14. 第五篇:关于MVPArms打包混淆及报错解决
  15. 手机qq怎么添加相册表情包_手机qq怎么制作表情包
  16. 计算机表格填充,Excel表格中数据填充功能的使用方法
  17. 谈谈谈zookeeper
  18. java软件视频教程下载 百度云盘_2018最新java夜校视频教程
  19. 衍射极限、MTF与像素大小(1)
  20. 关于聪明与努力的文章.

热门文章

  1. 使用john 1.9 破解centos7密码
  2. 他山之石:a16z 的 Web3 投资版图
  3. 图与网络模型及方法(二)
  4. Visifire图表
  5. 期望、方差、协方差、协方差函数、期望函数、方差函数
  6. Ubuntu 15.04 安装 Nvidia Quadro系列显卡驱动
  7. 射频工程师必须知道的:PA功率放大器那些事!
  8. 开水果店需要哪些设备,水果店的设备
  9. [译]C++17,标准库有哪些新变化?
  10. python 实现 短信登录 b站 并打印cookie内容