基于dba_hist_sqlstat查看sql语句的性能历史(r4笔记第92天)
时间:2022-05-04
本文章向大家介绍基于dba_hist_sqlstat查看sql语句的性能历史(r4笔记第92天),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在生产环境中,如果系统已经稳定,调优的空间就会越来越小,但是不代表没有调优的余地,可能工作的重心就会更加求稳,sql调优就是一项不间断的工作,很多工作还是需要前瞻的,如果等到问题严重的时候再紧急处理,提前的分析这些潜在问题就会让你不会总是心跳加快,两手冒汗。 dba_hist_sqlstat是一个宝库,很多的sql执行统计信息都会在其中,可以基于这个数据字典分析很多的特性,比如查看某条sql语句的性能历史,分析执行计划是否稳定等等,这些功能在分析sql语句的时候是相当实用的,毕竟一个awr报告中的sql问题可能只是一个表象,如果结合历史来看就会分析出更多的因素来。 这个脚本在<<Oracle SQL高级编程>>中提到,而且可以通过网站找到相关的脚本内容,如果明白了思路,大家想自己定制一下也不错。 大多数的脚本可以通过链接找到http://kerryosborne.oracle-guy.com/2009/06/oracle-11g-adaptive-cursor-sharing-acs/
分析某一条sql语句的性能历史脚本
set lines 155
col execs for 999,999,999
col avg_etime for 999,999.999
col avg_lio for 999,999,999.9
col begin_interval_time for a30
col node for 99999
break on plan_hash_value on startup_time skip 1
select ss.snap_id, ss.instance_number node, begin_interval_time, sql_id, plan_hash_value,
nvl(executions_delta,0) execs,
(elapsed_time_delta/decode(nvl(executions_delta,0),0,1,executions_delta))/1000000 avg_etime,
(buffer_gets_delta/decode(nvl(buffer_gets_delta,0),0,1,executions_delta)) avg_lio
from DBA_HIST_SQLSTAT S, DBA_HIST_SNAPSHOT SS
where sql_id = nvl('&sql_id','4dqs2k5tynk61')
and ss.snap_id = S.snap_id
and ss.instance_number = S.instance_number
and executions_delta > 0
order by 1, 2, 3
/
脚本运行情况如下:
SNAP_ID NODE BEGIN_INTERVAL_TIME SQL_ID PLAN_HASH_VALUE EXECS AVG_ETIME AVG_LIO
---------- ------ ------------------------------ ------------- --------------- ------------ ------------ --------------
38878 1 31-MAR-15 05.20.06.216 PM 0xtpfz5pj4prb 1880269335 104 5.702 327,280.7
38879 1 31-MAR-15 05.30.06.754 PM 0xtpfz5pj4prb 119 4.926 326,385.0
38880 1 31-MAR-15 05.40.07.622 PM 0xtpfz5pj4prb 125 4.713 328,324.9
38881 1 31-MAR-15 05.50.08.418 PM 0xtpfz5pj4prb 6 6.461 361,164.7
38884 1 31-MAR-15 06.20.09.984 PM 0xtpfz5pj4prb 21 5.324 321,935.6
38885 1 31-MAR-15 06.30.10.720 PM 0xtpfz5pj4prb 107 5.539 325,886.4
38886 1 31-MAR-15 06.40.11.283 PM 0xtpfz5pj4prb 64 5.432 329,591.9
38887 1 31-MAR-15 06.50.11.900 PM 0xtpfz5pj4prb 110 5.397 326,757.1
38888 1 31-MAR-15 07.00.12.457 PM 0xtpfz5pj4prb 103 5.792 329,023.0
38889 1 31-MAR-15 07.10.13.355 PM 0xtpfz5pj4prb 126 4.682 328,220.6
38890 1 31-MAR-15 07.20.13.848 PM 0xtpfz5pj4prb 128 4.601 326,872.7
38891 1 31-MAR-15 07.30.14.326 PM 0xtpfz5pj4prb 1880269335 131 4.508 328,507.7
38892 1 31-MAR-15 07.40.14.905 PM 0xtpfz5pj4prb 129 4.571 326,210.3
38893 1 31-MAR-15 07.50.15.372 PM 0xtpfz5pj4prb 132 4.468 327,796.7
38894 1 31-MAR-15 08.00.15.889 PM 0xtpfz5pj4prb 113 5.176 328,226.4
38895 1 31-MAR-15 08.10.16.442 PM 0xtpfz5pj4prb 63 5.194 332,234.3
38897 1 31-MAR-15 08.30.17.385 PM 0xtpfz5pj4prb 37 6.175 326,039.1
38898 1 31-MAR-15 08.40.17.922 PM 0xtpfz5pj4prb 76 7.755 327,436.6
38899 1 31-MAR-15 08.50.18.469 PM 0xtpfz5pj4prb 113 5.245 327,478.5
38900 1 31-MAR-15 09.00.18.950 PM 0xtpfz5pj4prb 127 4.614 326,215.6
38901 1 31-MAR-15 09.10.19.458 PM 0xtpfz5pj4prb 74 4.316 332,214.9
如果某些指标突然发生了重大的变化,可以通过性能历史很清晰的看到,对于plan_hash_value做了断句处理,如果发生了执行计划的改变,就会很清楚什么时间点有了变动,哪些方面的变化等等。
- [每周日-先行者课堂笔记] -- react版的倒计时实现
- Android优化之Hardware Layer
- iOS开发入门笔记
- Kotlin之基本语法
- Spark SQL在100TB上的自适应执行实践
- Swift 4.0 新特性
- React Native使用Modal自定义分享界面
- android 接入Fabric Crashlytics信息系统
- 干货 | 机器学习在web攻击检测中的应用实践
- 学点vue.js的东西,什么都得学点,面试时说不定对方会问什么
- =>,Es6箭头符号的前世今生
- Crash之防测漏篇
- React Native仿美团下拉菜单
- ES6中提升效率的新方法,多学一点是一点。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python将音频进行变速的操作方法
- 解决django的template中如果无法引用MEDIA_URL问题
- 从源码解读 - Vue常考面试题
- Android PickerView实现三级联动效果
- Android巧用XListView实现万能下拉刷新控件
- Android获取其他应用中的assets资源
- Android自定义动态壁纸开发详解
- VsCode插件koroFileHeader一键添加文件头部注释
- 强大的 Stream API(一)
- python3 配置logging日志类的操作
- 你对CSS权重真的足够了解吗?
- python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
- Js 的事件循环(Event Loop)机制以及实例讲解
- 你不知道的js中关于this绑定机制的解析[看完还不懂算我输]
- 解决Django部署设置Debug=False时xadmin后台管理系统样式丢失