目录:

Oracle数据完整性和锁机制 
索引及优化之表分析 
表分析、约束及表间关系 
Oracle体系结构1
Oracle体系结构2 
海量数据库及分区1 
海量数据库及分区2 
海量数据库及分区3 
海量数据库及分区4 
高级SQL优化(一)  
高级SQL优化(二)  
高级SQL优化(三) 常用优化工具 
PPT和源码下载:   http://***/forum/posts/list/6365.html
配套视频课程
Oracle性能优化 http://***/product/601 
海量数据库和高级SQL优化 http://***/product/602

SQL*PLUS下使用AUTOTRACE
1.AUTOTRACE简介  
AUTOTRACE是SQL*Plus的一项功能,其作用是自动跟踪SQL语句,为SQL 语句生成一个 执行计划并且提供与 该语句的处理有关的统计信息
SQL*Plus AUTOTRACE 可以用来替代 SQL Trace 使用,AUTOTRACE 的好处是不必设置跟踪文件的格式,并且它将自动为 SQL 语句显示执行计划。AUTOTRACE与执行计划的区别是AUTOTRACE 分析和执行语句;而EXPLAIN PLAN仅分析语句,而不负责执行语句。
AUTOTRACE在SQL*PLUS下执行,使用AUTOTRACE不会产生跟踪文件。
2.配置AUTOTRACE
(1).确保表PLAN_TABLE已经创建,如果没有则如下创建:

(2).确保角色plustrace已经创建,如果没有则如下创建:
3.使用AUTOTRACE

4. AUTOTRACE设置命令
序号
命令
解释
1
SET AUTOTRACE OFF
此为默认值,即关闭Autotrace
2
SET AUTOTRACE ON
产生结果集和解释计划并列出统计
3
SET AUTOTRACE ON EXPLAIN
显示结果集和解释计划不显示统计
4
SETAUTOTRACE TRACEONLY
显示解释计划和统计,尽管执行该语句但将看不到结果集
5
SET AUTOTRACE TRACEONLY STATISTICS
只显示统计
参见每个设置的现场举例
5. AUTOTRACE STATISTICS含义

序号
列名
解释
1
recursive call
递归调用SQL的个数;Oracle在执行这个SQL的时候,有时候会生成很多额外的SQL语句,这个就称为递归调用
2
db block gets
从buffer cache中读取的block的数量
3
consistent gets
从buffer cache中读取的undo数据的block的数量
4
physical reads
从磁盘读取的block的数量
5
redo size
DML生成的redo的大小
6
sorts (memory)
在内存执行的排序量
7
sorts (disk)
在磁盘上执行的排序量,如果memory空间使用不足,是会使用disk的空间的
8
bytes sent via SQL*Net to client
利用sql*net传入到client的字节数;
9
bytes received via SQL*Net from client
利用sql*net传出client的字节数;

使用SQL调优顾问
删除掉bigtab和smalltab上的所有索引:

既然上述语句性能很差,那么怎么优化呢?幸运的是Oracle提供一个工具称为SQL调优顾问。从Oracle 10g起,可以使用SQL调优顾问 (SQL Tuning Advisor ,STA)来获得一个性能很差的语句的优化结果。STA的特点是简单、智能,DBA只需要调用函数就可以给出一个性能很差的语句的优化结果,从而做到有的放矢!
使用DBMS_SQLTUNE包来创建优化任务并阅读优化建议:
创建完成后验证是否完成:
创建完成后验证是否完成:

 
单击该条目查看优化结果
也可以通过SQL语句来查看结果,此方法是我们最喜欢的方法:

  

进行优化:
优化后在使用autotrace:

优化后在使用autotrace:

结论:
项目
优化前
优化后
倍数
从持久层获取consistent gets(从buffer cache中读取的undo数据的block的数量)
21688
6950
3
物理读physical reads(从磁盘读取的block的数量)
21589
6928
3
递归调用recursive call
0
1
N/A
时间(毫秒)
2070
1078
2

使用STA能快速定位性能瓶颈,从而为性能优化提供了准确的依据!

实时SQL监视
实时SQL监视(real-time SQL Monitorning)是Oracle 11g的另外一个新功能,其作用是允许用户监视正在执行的SQL。默认情况下,当使用并行查询、或者当SQL执行的CPU或I/O超过5秒钟时会自动启动。
也可以使用优化提示强制使用实时SQL监视功能,如下:
select   count(*)
  from bigtab a, smalltab b
   where  a.object_name=b.table_name
如果要强制不使用实时SQL监视功能,则也可以使用优化提示:
select   count(*)
  from bigtab a, smalltab b
   where  a.object_name=b.table_name
与实时SQL监视相关的系统视图包括:
uV$SQL_MONITOR
uV$SQL_PLAN_MONITOR
uV$ACTIVE_SESSION_HISTORY
uV$SESSION
uV$SESSION_LONGOPS
uV$SQL
uV$SQL_PLAN
对于刚刚监视的结果,可以使用DBMS包读取:
select dbms_sqltune.report_sql_monitor from dual;
1.实时SQL监视示例1-执行超过5秒的SQL

 在OEM中查看监视结果,选择“性能”->“其它监视链接”->“SQL Monitoring”:

 查看具体的监视报告(图形化):

单击“文本报告”,则:

使用DBMS包查看监视结果:

2.实时SQL监视示例2-使用优化提示强制监视

  
结论:
1.实时SQL监视通过OEM查看其监视报告时,具有更好的图形化的展示效果,因此更加直观
2.如果监视的SQL语句发现具有全表扫描等执行计划的特征,或者CPU时间和I/O时间比较长,则可以与SQL调优顾问接合起来,不但能获知性能瓶颈,而且能获得Oracle推荐的优化策略。
3.实践中,程序员往往不加思考的按照自己的理解和经验编写SQL,此举在90%的项目中存在,从而造成项目产品投用后很快就产生各种性能瓶颈,正确的做法应该是 在准备好足够的测试数据,并且监视每一条SQL并在开发的初始阶段即 优化之
习题

1.在对索引的限制中,关于NOT和不等于的限制在11g数据库CBO模式下还存在吗,为什么?在RBO模式下呢?
2.如果某个索引中的列具有可空属性,则Oracle执行类似 is null时不会使用索引,其原因是什么?
3.Oralce具有那三种访问路径,其中最快的两种是什么?
4.什么情况下应该使用复合索引,此时使用复合索引比使用多个单个索引具有哪些优势?

5.分别配置并使用SQL优化常用的三种工具:Autotrace、调优顾问和实时监视顾问,复习本课的举例来加深理解。

转载于:https://www.cnblogs.com/liuzhuqing/archive/2013/02/04/7480625.html

高级SQL优化(三) 常用优化工具 ——《12年资深DBA教你Oracle开发与优化——性能优化部分》...相关推荐

  1. 高级SQL优化(二) ——《12年资深DBA教你Oracle开发与优化——性能优化部分》

    目录: Oracle数据完整性和锁机制  索引及优化之表分析  表分析.约束及表间关系  Oracle体系结构1 Oracle体系结构2  海量数据库及分区1  海量数据库及分区2  海量数据库及分区 ...

  2. 海量数据库及分区4——《12年资深DBA教你Oracle开发与优化——性能优化部分》...

    目录: Oracle数据完整性和锁机制  索引及优化之表分析  表分析.约束及表间关系  Oracle体系结构1 Oracle体系结构2  海量数据库及分区1  海量数据库及分区2  海量数据库及分区 ...

  3. IT:前端进阶技术路线图(初级→中级→高级)之初级(研发工具/HTML/CSS/JS/浏览器)/中级(研发链路/工程化/库/框架/性能优化/工作原理)/高级(搭建/中后台/体验管理等)之详细攻略

    IT:前端进阶技术路线图(初级→中级→高级)之初级(研发工具/HTML/CSS/JS/浏览器)/中级(研发链路/工程化/库/框架/性能优化/工作原理)/高级(搭建/Node/IDE/中后台/体验管理/ ...

  4. oracle in 索引_Oracle 性能优化总结

    作者 | 帅性而为1号 出处 : https://blog.csdn.net/zhushuai1221/article/details/51740846 网上关于SQL优化的教程很多,但是比较杂乱.近 ...

  5. MySQL 数据库 之 高级 SQL 语句(常用查询,正则表达式,运算符,库函数,存储过程)

    文章目录 前言 一 . 常用查询介绍 1.按关键字排序 1.1默认升序 1.2 降序 1.3 多字段的排序 2. 对结果进行分组 2.1 分组统计 3.限制结果条目 3.1 查看前4行 3.2 查看第 ...

  6. MySQL数据库高级SQL语句(三)

    MySQL数据库高级SQL语句 SELECT TRIM 连接查询 CREATE VIEW UNION 交集值 无交集值 CASE SELECT TRIM SELECT TRIM (位置 '想移除掉的字 ...

  7. DBA整理的万字详解MySQL性能优化,值得收藏!

    点击关注公众号,实用技术文章及时了解  作者:LanceToBigData  cnblogs.com/zhangyinhua/p/7620964.html 说起MySQL的查询优化,相信大家积累一堆技 ...

  8. Android开发中的性能优化(摘录:陈彧堃演讲实录)

    大家好!我是陈彧堃,其实HTML5我之前也做过一些相关的研究,包括现在我们也在做一些调研.我个人一年前在G3上利用HTML5开发一些东西的时候,我发现原生的对HTML不支持,开始踏踏实实做Androi ...

  9. 前端开发:Web性能优化有哪些方法?

    Web性能优化,主要分为前端和后台两个部分性能优化,后台性能优化决定了Web能不能用,前端优化决定了其好不好用,也就是牵涉到前端用户体验和Web易用性等情况,所以前端性能与用户体验是有着极大的关联的. ...

最新文章

  1. Study on Android【四】--显示控件使用
  2. 辞旧迎新,总结2010,展望2011
  3. Linux下的ELF可执行文件学习总结
  4. .Net Micro Framework研究—绘图
  5. 将jar添加到发布目录_第32批免购置税新能源车型目录发布;通用BEV3平台将入华...
  6. 方法之输出星型及其调用
  7. 知行合一!如何做好项目经理?
  8. python小游戏开题报告范文_课题开题报告范文
  9. linux下xz格式,【转载】Linux下tar.xz格式文件的解压方法
  10. 怎么理解token,tokenize,tokenizer.
  11. 让虚拟机接入办公网络
  12. C++ boost库中的sp_counted_base实现解析
  13. 苹果手机怎么清除缓存_手机里的文件如何彻底删除?教你清除缓存的方法
  14. 如何制作商场超市地摊清仓大甩卖广告语录音
  15. CS:APP CH02信息的表示和处理知识点总结
  16. 安全测试(四) Wi-Fi安全 渗透测试 网络安全 公共场的免费Wi-Fi真的安全吗?个人信息被监控窃听风险 如: ARP攻击 SSL攻击 DNS安全 加密方式等 枚举实战应用案例 信息窃听获取
  17. [附源码]JAVA+ssm网上游戏商店设计(程序+Lw)
  18. 数学编织家和他们软软的作品
  19. 区块链/solidity-address payable和address
  20. 自己写了个魔兽显血改键工具

热门文章

  1. qint64转为qstring qt_Qt项目中TCP通信的实现方式经验总结(服务端部分)
  2. 技术盘点:云原生中间件的技术演进与未来趋势展望
  3. 服务发现与配置管理高可用实践
  4. mysql大规模读写性能_十招搞定 MySQL 大规模数据库的性能和伸缩性优化
  5. 哪些深度相机有python接口_python 从深度相机realsense生成pcl点云
  6. 微服务集成cas_Spring Cloud Security集成CAS (单点登录)对微服务认证
  7. java comparable接口_Java面试题之Java集合篇三
  8. 【知识星球】总有些骨骼轻奇,姿态妖娆的模型结构设计,不知道你知不知道,反正我知道一些...
  9. 【技术综述】闲聊图像分割这件事儿
  10. 2022年全球及中国滑雪铲行业品牌调研与市场消费规模分析报告