oracle编程入门笔记2015-01-22--解释计划
来源:互联网 发布:python公约数 编辑:程序博客网 时间:2024/04/26 17:25
在进行开发时,遇到性能问题调优经常要看执行计划。但是执行计划需要sql实际执行后才能获取。有时候使用替代方案解释计划来近似代替最终的执行计划。
1.获取解释计划的方法。
a,用plsql developer中sql 窗口直接按快捷键F5就可以看到。其他图形化工具类似
里面字段的意思可以就不解释了。太多了,用到了再查,多查几次就记住了。
b.使用命令
explain plan for (sql语句):自动生成解释计划添加到plan_table表中。
接下来,你可以统计自己编写sql语句去plan_table 表中查询,但是实际情况是我在plan_table 中没有找到任何记录。但是切换到sys账户使用dba权限是可以查看的。
而且一个解释结果生成的不是一条记录。是多行记录,分别记录了每一步执行情况,包括数据库内部的一些查询。
其实直接查看结果往往不方便,所以oracle提供了一个方法将结果格式化,dbms_xplan.display这个函数有四个参数,都有默认值,如果不传入参数就查询最近一条解释结果。
用法select * from table(dbms_xplan.display);
解释计划特点
1.解释计划不需要正在执行,所以不会影响数据库。返回结果也比较快
2.解释计划因为没有真正执行,所以得到的结果与真正的执行计划是有一定差异的,但是,在关键步骤上差异不大。所以在开发过程中用起来比较方便,在后期针对特定sql调优过程中可能会因为信息不全导致力不从心。
c.使用set autotrace on;
使用该命令,生效后。执行
解释计划为什么不能等同于执行计划?
1.解释计划是根据当时数据库收集的统计信息计算出来的最优执行计划。但是数据库始终变化的,所以真正执行的时候可能数据环境已经不一样了
2.解释计划对所有的绑定变量统一判断为varchar2.并且不会理会绑定变量的实际值。
举例
解释计划:
执行计划:由于某种原因,没有获取到。以后补上。
之前使用
步骤1:alter session set statistics_level=all ;
步骤2:在此处执行你的SQL
步骤3:select * from table(dbms_xplan.display_cursor(null,null,'allstats last'));
这种方式获取执行计划是因为我打开了serveroutput,关闭就可以了。
如果serveroutput 为on,那么没执行完一条sql语句最后一定会隐式执行dbms_output的方法。所以获取最后执行的sql执行计划总会保存,提示你sql id 不对。
最明显的错误在于,预估的返回行是错误的。实际返回为0.实际执行过。我只是想说明解释计划与执行计划不完全一样。
- oracle编程入门笔记2015-01-22--解释计划
- oracle编程入门笔记2015-01-23--执行计划
- oracle编程入门笔记2015-01-18--执行计划中的索引扫描方式说明
- oracle编程入门笔记2015-01-20--oracle集合运算
- Oracle执行计划解释
- oracle执行计划解释
- Oracle 解释执行计划
- Oracle解释计划
- Oracle 解释执行计划
- oracle编程入门笔记2015-01-06--基本概念
- oracle编程入门笔记2015-01-06--sqlplus
- oracle编程入门笔记2015-01-07--核心SQL
- oracle编程入门笔记2015-01-08--查询
- oracle编程入门笔记2015-01-09--插入
- oracle编程入门笔记2015-01-10--更新,删除
- oracle编程入门笔记2015-01-12--数据合并
- oracle编程入门笔记2015-01-12--数据库原理1
- oracle编程入门笔记2015-01-14--查询转换
- 等待与你相遇
- Cent os 6.4 Cobbler搭建
- MVAPICH2多线程支持问题
- SpringMVC映射Date类型
- log4j中logger标签的用途
- oracle编程入门笔记2015-01-22--解释计划
- Map的遍历输出和Collections以及Properties
- [解决方法]回收站东西删不掉
- stl 学习小结
- ACM100题-002三个水杯
- Spring定时任务的几种实现
- drupal7编辑器TinyMCE安装,整合IMCE
- GTK入门学习:glade的环境搭建
- PCB设计软件Protel使用中的问题