Oracle 高性能SQL引擎剖析----执行计划
执行计划是指示Oracle如何获取和过滤数据、产生最终结果集,是影响SQL语句执行性能的关键因素。我们在深入了解执行计划之前,首先需要知道执行计划是在什么时候产生的,以及如何让SQL引擎为语句生成执行计划。
在深入了解执行计划之前,我们先了解SQL语句的处理执行过程。当一条语句提交到Oracle后,SQL引擎会分为三个步骤对其处理和执行:解析(Parse)、执行(Execute)和获取(Fetch),分别由SQL引擎的不同组件完成。SQL引擎的组件如图1-1所示。
1. SQL编译器(SQL Compiler)
将语句编译到一个共享游标中。SQL编译器由解析器(Parser)、查询优化器(Query Optimizer)和行源生成器(Row Source Generator)组成。
(1)解析器(Parser)—执行对SQL语句的语法、语义分析,将查询中的视图展开、划分为小的查询块。
(2)查询优化器(Query Optimizer)—为语句生成一组可能被使用的执行计划,估算出每个执行计划的代价,并调用计划生成器(Plan Generator)生成计划,比较计划的代价,最终选择选择一个代价最小的计划。查询优化器由查询转换器(Query Transform)、代价估算器(Estimator)和计划生成器(Plan Generator)组成。
注意,上述优化器实际上指的是基于代价的优化器(Cost Based Optimizer,CBO),CBO也是当前采用的所有优化和调优技术的核心基础。

查询转换器(Query Transformer)—查询转换器决定是否重写用户的查询(包括视图合并、子查询反嵌套),以生成更好的查询计划。
代价估算器(Estimator)—代价估算器使用统计数据来估算操作的选择率(Selectivity)、返回数据集的势(Cardinality)和代价,并最终估算出整个执行计划的代价。
计划生成器(Plan Generator)—计划生成器会考虑可能的访问路径(Access Path)、关联方法和关联顺序,生成不同的执行计划,让查询优化器从这些计划中选择出代价最小的一个计划。
(3)行源生成器(Row Source Generator)—行源生成器从优化器接收到优化的执行计划后,为该计划生成行源(Row Source)。行源是一个可被迭代控制的结构体,它能以迭代方式处理一组数据行、并生成一组数据行。
2. SQL执行引擎(SQL Execution Engine)
SQL执行引擎依照语句的执行计划进行操作,产生查询结果。在每一个操作中,SQL执行引擎会以迭代方式执行行源、生成数据行。
提示:当Oracle引入一些新的优化技术时,会出现一些新的组件,例如,SQL进化管理器(SPM)、SQL性能分析器(SPA)等,这些组件会与SQL引擎的组件融合,提供更好的优化和调优方法。
Oracle 高性能SQL引擎剖析----执行计划的更多相关文章
- oracle中查看sql语句的执行计划
1.在pl/sql中打开cmd命令容器 2.在cmd命令窗口中输入:explain plan for select * from t; 3.查看sql语句的执行计划:select * from tab ...
- ORACLE 查看有多个执行计划的SQL语句
在SQL优化过程,有时候需要查看哪些SQL具有多个执行计划(Multiple Executions Plans for the same SQL statement),因为同一个SQL有多个执行计划一 ...
- ORACLE数据库SQL语句的执行过程
SQL语句在数据库中处理过程是怎样的呢?执行顺序呢?在回答这个问题前,我们先来回顾一下:在ORACLE数据库系统架构下,SQL语句由用户进程产生,然后传到相对应的服务端进程,之后由服务器进程执行该SQ ...
- [z]Oracle性能优化-读懂执行计划
http://blog.csdn.net/lifetragedy/article/details/51320192 Oracle的执行计划 得到执行计划的方式 Autotrace例子 ...
- 【MS SQL】通过执行计划来分析SQL性能
原文:[MS SQL]通过执行计划来分析SQL性能 如何知道一句SQL语句的执行效率呢,只知道下面3种: 1.通过SQL语句执行时磁盘的活动量(IO)信息来分析:SET STATISTICS IO O ...
- Oracle性能优化-读懂执行计划
Oracle的执行计划 得到执行计划的方式 Autotrace例子 使用Explain explain plan set STATEMENT_ID='testplan' for select * fr ...
- 官方文档:11G新特性SQL PLAN BASLINE 执行计划基线
什么是SQL执行计划管理? SQL计划管理(SQL plan management)是一咱预防机制,记录和评估SQL语句的执行计划.SQL plan management的主要功能是sql plan ...
- (转) Oracle性能优化-读懂执行计划
Oracle的执行计划 得到执行计划的方式 Autotrace例子 使用Explain explain plan set STATEMENT_ID='testplan'for select * fro ...
- SQL Server 优化-执行计划
对于SQL Server的优化来说,优化查询可能是很常见的事情.由于数据库的优化,本身也是一个涉及面比较的广的话题, 因此本文只谈优化查询时如何看懂SQL Server查询计划.毕竟我对SQL Ser ...
随机推荐
- Drupal7 配置多站点及为每个站点设置语言
默认情况 在Drupal7的安装目录下存在sites目录 sites目录结构如下: --all --default --example.sites.php --README.txt 1. 添加新域名, ...
- [Cocos2d-html5]关于压缩
使用的是2.2版本,压缩时要注意文件顺序,main.js文件最好排在最后一个,避免错误.
- java阻塞队列之LinkedBlockingQueue
LinkedBlockingQueue是BlockingQueue中的其中一个,其实现方式为单向链表,下面看其具体实现.(均为JDK8) 一.构造函数 在LinkedBlockingQueue中有三个 ...
- JS基础,课堂作业,三个数字排序
三个数字大小排序 <script> var a = parseInt(prompt("请输入第一个整数:")); var b = parseInt(prompt(&qu ...
- centos 7 安装和基本配置
U盘安装centos 7 还是官方文档最准确. 下载centos https://docs.centos.org/en-US/centos/install-guide/downloading/ 制作安 ...
- Openwrt能用的花生壳客户端
http://files.cnblogs.com/mazhiyong/phddns.zip 使用教程可参考官方文档 http://service.oray.com/question/116.html
- Java Monitoring&Troubleshooting Tools
JDK Tools and Utilities Monitoring Tools You can use the following tools to monitor JVM performance ...
- 使用SKlearn(Sci-Kit Learn)进行SVR模型学习
今天了解到sklearn这个库,简直太酷炫,一行代码完成机器学习. 贴一个自动生成数据,SVR进行数据拟合的代码,附带网格搜索(GridSearch, 帮助你选择合适的参数)以及模型保存.读取以及结果 ...
- Linux 配置网络连接
在VMware里,依次点击”编辑“ - ”虚拟网络编辑器“,如下图,我选择的是NAT模式: 在这个界面接着点"NAT设置",查看虚拟机的网关,这个网关在第三步要用.我这里的网关是1 ...
- javascript event对象操作
js代码: $(".leads_detail").click(function(e){ e = e || event; var t = e.target || e.srcEleme ...