stored_outline优化稳定执行计划
1、打开一个session,设置自动创建sql的stored_outline
alter session set create_stored_outlines = demo;
2、抓取性能不好的sql,例如(假设nest loop 比较优):
SELECT /*+ use_hash(a,b)*/* FROM game_draw_stats_site_sale a ,game_draw b WHERE a.draw_id =b.draw_id AND a.site_id =242023;
在本session中运行。抓取stored_outline,视图user_outlines,
User_Outline_Hints中可查到:
SELECT * FROM user_outlines;
SELECT * FROM User_Outline_Hints;
1 SYS_OUTLINE_10010420202142101 DEMO USED 2010-1-4 20:20:21 10.2.0.2.0
2 NEW_PLAN DEMO UNUSED 2010-1-4 20:56:22 10.2.0.2.0
3、停止收集执行的路径(否则以下你执行的一些SQL也会放到存储概要的表格中,令接下来的处理有点困难)。
alter session set create_stored_outlines = false;
4、在有问题的sql上创建新的outline
此时的sql是 加上正确hint的语句,例如本例中将/*+ use_hash(a,b)*/ 换成了 /*+ use_nl(a,b)*/ )
create or replace outline new_plan for category demo on SELECT /*+ use_nl(a,b)*/ * FROM
game_draw_stats_site_sale a ,game_draw b WHERE a.draw_id =b.draw_id AND a.site_id =242023;
其实就是将性能不好的sql的hint名改成现在的这个性能好的hint名,达到优化、固定执行计划的目的。
5、用新创建的outline进行交换:
update outln.ol$hints
set ol_name =
decode(
ol_name,
'NEW_PLAN','SYS_OUTLINE_10010420202142101',
'SYS_OUTLINE_10010420202142101','NEW_PLAN'
)
where ol_name in ('SYS_OUTLINE_10010420202142101','NEW_PLAN')
;update outln.ol$ ol1
set hintcount = (
select hintcount
from ol$ ol2
where ol2.ol_name in ('SYS_OUTLINE_10010420202142101','NEW_PLAN')
and ol2.ol_name != ol1.ol_name
)
where
ol1.ol_name in ('SYS_OUTLINE_10010420202142101','NEW_PLAN')
;
6、启动一个新的session进行测试:
alter session set use_stored_outlines =demo;
7、测试无误后,修改系统参数:
alter system set use_stored_outlines = demo;
8、对绑定变量的情况也可参考
SQL> alter system set use_stored_outlines =true;
System altered
SQL> create or replace outline ol_1 on SELECT * FROM game_draw_stats_site_sale a ,game_draw b WHERE a.draw_id =b.draw_id AND a.site_id =:1;
Outline created
SQL> create or replace outline ol_2 on SELECT /*+ use_hash */ * FROM game_draw_stats_site_sale a ,game_draw b WHERE a.draw_id =b.draw_id AND a.site_id =:1;
Outline created
SQL> show user
User is "SYS"
SQL> UPDATE OUTLN.OL$HINTS SET OL_NAME=DECODE(OL_NAME,'OL_1','OL_2', 'OL_2','OL_1') WHERE OL_NAME IN ('OL_1','OL_2');
16 rows updated
SQL> DROP OUTLINE OL_2;
Outline dropped
转载于:https://blog.51cto.com/mrdba/618915
stored_outline优化稳定执行计划相关推荐
- oracle稳定执行计划1
稳定执行计划 1 策略: Oracle的sql 执行计划在一些场景下会发生变化,导致系统会发生不可知的情况,影响系统的稳定性,特别是关键业务的sql. 比如下面的场景: 统计信息过老,重新收集了统计信 ...
- MySQL性能优化-根据执行计划进行性能优化
2019独角兽企业重金招聘Python工程师标准>>> 1. 使用执行计划explain命令分析 在要运行的sql前面加上explain就可以得到执行计划如下表: 在explain后 ...
- MySQL性能分析工具的使用:慢查询日志、EXPLAN的使用、分析优化器执行计划:trace、MySQL监控分析视图-sys schema
文章目录 1.数据库服务器的优化步骤 2.查看系统性能参数 2.1 语法 2.2 常用参数 3.统计SQL的查询成本:last_query_cost 4.定位执行慢的SQL:慢查询日志 4.1 慢查询 ...
- [转]Mysql中的SQL优化与执行计划
From : http://religiose.iteye.com/blog/1685537 一,如何判断SQL的执行效率? 通过explain 关键字分析效率低的SQL执行计划. 比如: expla ...
- 正确使用索引(sql优化),limit分页优化,执行计划,慢日志查询
查看表相关命令 - 查看表结构 desc 表名- 查看生成表的SQL show create table 表名- 查看索引 show index from 表名 使用索引和不使用索引 由于索引是专门用 ...
- mysql 执行计划 优化_执行计划
#### 概念 一个sql语句在没有执行(运行)之前,先计算一下该sql语句需要调用的相关资源,再决定该sql语句是否要最终执行,该行为被称为"执行计划". #### 作用 主要用 ...
- MySQL优化从执行计划开始(explain超详细)
前言 小伙伴一定遇到过这样反馈:这页面加载数据太慢啦,甚至有的超时了,用户体验极差,需要赶紧优化: 反馈等同于投诉啊,多有几次,估计领导要找你谈话啦. 于是不得不停下手里头的活,赶紧进行排查,最终可能 ...
- mysql 数据库优化之执行计划(explain)简析
数据库优化是一个比较宽泛的概念,涵盖范围较广.大的层面涉及分布式主从.分库.分表等:小的层面包括连接池使用.复杂查询与简单查询的选择及是否在应用中做数据整合等:具体到sql语句执行效率则需调整相应查询 ...
- Mysql优化之执行计划查看
我们经常说到mysql优化,优化中一种常见的方式就是对于经常查询的字段创建索引.那么mysql中有哪些索引类型呢? 一.索引分类 1.普通索引:即一个索引只包含单个列,一个表可以有多个单列索引 2.唯 ...
最新文章
- 工程师忽略的隐形成本
- HDU 2955 Robberies
- foxmail、outlook发送邮件,进度条很慢
- Tomcat源码调试环境搭建
- HDU - 2457 DNA repair(AC自动机+dp)
- P4198 楼房重建 线段树 + 区间合并
- jdk 安全属性_系统属性的JDK 12 Javadoc标记
- C++ new和delete运算符
- C++ Primer 第十三章 拷贝控制
- webpack笔记一:webpack的介绍,安装,加载css、图片、字体等
- postman 第4节 切换环境和设置读取变量(转)
- html中css层叠样式表(行内样式,内嵌式,外部式)
- b区计算机复试国家线,2017考研A区B区及各学科国家线预测解析
- redis中hget命令
- 关于Windows Server 2008 Service Pack 1
- 2021-05-13
- 电脑各个硬件的理论知识 经典
- 【足迹C++primer】43、拷贝控制和资源管理
- AutoCAD无法显示虚线的解决方法
- 【重点:线程池续】超人气组合:Callable和Future
热门文章
- android 图片编辑 画圈,Android种图片圆形化的三种方式
- ros_tools.prompt 断点调试
- boost::bind with ros topic,ros中subscribe用boost::bind绑定多个参数
- Spring配置XML本地提示:点击eclipse属性——选择XML Catalog
- 伪元素选择器使用场景-字体图标(CSS3)
- left join 最后一条_一条Mysql查询语句的西天取经之路,你真的了解吗?
- 取余运算怎么算_3 数学运算 矩阵操作
- Halcon缺陷检测——测量拟合
- 基于jQuery的uploadify(flash上传文件)控件v1.6.2 bug修正
- Ponemon Institute告诉你,大数据正在勾搭网络安全