陈老师:1415968548 郑老师:2735197625 乐老师:354331153
客服热线:
19941464235/19906632509(微信同号)

客服微信

Oracle SQL Tuning算法与实战

学习人数:1865 课程类型:就业培训 课时长度:2天/12课时
立即咨询
课程介绍

在日常的运维工作中,我们经常遇到SQL突然变慢,执行了几个小时还没有结果返回。我们收了执行计划,SQL有几百行,执行计划也有几十行,耐住性子看了好半天,还是理不出头绪,心象被一团乌云堵住。只好找更资深的DBA去解决,资深DBA看看执行计划告诉你,你试试这个,再试试那个,实在不行找应用讨论一下。多数时候,我们能把问题用SQL改写、加HINT、用SQL profile的方式绕过去,可是当写报告时,面对质疑时,我们又说不出所以然,只好色厉而内荏地说,事情本来就是这样。带着一脑子自己都讲不清的问号,惴惴不安地结束谈话。

如果您是一名开发人员,收到DBA让你改SQL/加hint的建议时,你心里会不会有很多问号?为什么以前不出?数据量没有太大变化呀!真的是SQL的问题吗?release一个版本需要经过N多繁复的过程,年底会不会被扣绩效?w您知道DBA说得不对,但又无力反驳....

有没有一种办法,能让我们暂时放下执行计划,放下SQL语句,用极快的速度找到问题发生在哪里,并快速有效地解决问题,一招命中。写报告时,又能经得起质疑与推敲呢?

其实是有的。上面说的是“放下”,放下不是放弃,是暂时放下那些让你乌云堵心的东西,去观察问题的实相,最直接的问题是慢,我们去观察慢就好了,为什么跳过N多步去读执行计划呢?

通过这门课,大家将学会SQL优化的另一个方法。这个方法快速、有效、精准。

课程目标
相信我们对自己的要求从来就不是作个平凡的DBA,一个平凡的Developer混口饭吃,知人所不知,能人所不能,才能体现我们的价值,才能在环境中脱颖而出。祝愿大家早日达成所愿。
课程大纲
如何快速定位SQL性能问题
搞清楚这是个SQL优化的问题还是DB性能的问题。
是SQL执行计划的问题,还是数据库资源等待的问题
或是OS资源的问题
什么情况下需要优化SQL
是SQL执行频率高的问题,还是单次执行慢的问题?
是执行计划中的哪一步造成了性能问题
如何收集执行计划
通过sql monitor为SQL优化提供数据
通过ASH为SQL优化提供数据
如何度量一条SQL的性能
很多初级DBA会说看cost,这是不对的cost只是Oracle猜测的结果
在统计信息正确的基础上,看cost,可能只是决定加索引的一个度量,并不是度一条SQL真实性能的度量。
SQL访问路径
全表扫描
索引范围扫描
索引唯一扫描
索引全扫描
索引快速全扫描
我们将用动画方式演示B*Tree索引的构建过程及内部结构
结果集的连接方式
Nested loop Join
Hash Join
Sort Merge Join
我们将用动画试演示Hash Table是如何生成的
优化器选择访问路径的算法
选择率计算
数据库均匀分布
直方图
Out of range
成本计算
优化器选择连接方式的算法
Nested Loop
Hash Join
Sort Merge Join
统计信息
常规统计信息收集
手工调整统计信息
统计信息是执行计划生成的基础
讲述您从来不知道一些处理统计信息的方法及原理。
Oracle优化器的局限
讲师信息

陈宏义

云贝教育高级讲师  数据库服务技术总监

Oracle数据库骨灰级专家,曾就职于Oracle GCS,现任中亦安图数据库团队华东区服务总监,做过10年开发,用过各种编程语言,不依赖开源产品构建过java的开发框架。在Sony作开发与数据库技术支持期间,在C语言,Delphi,PowerBuilder,Java等开发语言方面得到了广泛的规范的训练;在通过开发DBA的工作,深入了解了优化器的底层原理,又经过GCS正规军的强化训练,形成一套独特的SQL优化方法,简捷、精准、有效。由于长期开发的经验,能从OS、数据结构的角度去慎视database的工作原理,在熟悉原理的基础上,来优化数据库性能,经过在中亦安图的第三方DBA工作,练出解决未知问题的能力。 感谢Sony给予的环境,感恩Oracle GCS给予的正规军分析问题的方式,感谢中亦安图的良师益友。
推荐课程

Oracle深入浅出(DSI系列Ⅰ)

Oracle 特殊恢复原理与应用(DSI系列Ⅱ)

Oracle SQL Tuning(DSI系列Ⅲ)

Oracle DB Performance Tuning(DSI系列Ⅳ)