关于sql引擎 和 plsql引擎

oracle 使用2个引擎来执行SQL和代码块:SQL 引擎和PL/SQL 引擎, Oracle 使用这2个引擎来执行PL/SQL blocks 和 subprograms。那么在执行的时候,PL/SQL 引擎把DML 语句发送给SQL 引擎,然后由SQL 引擎执行,执行完毕后,SQL 引擎把结果集在发送给PL/SQL 引擎。因此在不同引擎之间切换就需要进行context
switch,过多的context switch是会影响SQL性能的。而bulk (关于bulk,后续介绍)就是从减少引擎之间context switches的方式来提高sql的效率。 把对SQL 进行打包处理。 

1、sql引擎介绍
一条sql语句在sql引擎中,大致会经过如下三个步骤:解析(parse)、执行(execute)、获取(fetch):这三个步骤分别由sql引擎的不同的组件完成。

1.1、sql编译器(sql compiler)

解析器(parser):

查询优化器(Query Optimizer):为语句生成一组可能被使用的执行计划,估算出每个执行计划的代价,调用计划生成器(Plan Generator)生成计划,比较计划的代价,最终选择一个代价最小的执行计划(注意代价估算器只能估算出代价,并不能选择出最优的,来让计划生成器生成那个最优的,而是让计划生成器生成所有的执行计划,再进行比较)。

通过上图也可以看到,查询优化器包含了:查询转换器(Query Transform)、代价估算器(Estimator)、计划生成器。

那么,我们继续看下查询优化器包含的这三个组件的用途:

查询转换器:决定是否重写用户的查询(包括视图合并,子查询反嵌套),以生成更好的查询计划。

代价估算器:代价估算器使用统计数据来估算操作的选择率(selectivity)、返回数据集的势(Cardinality)和代价。并最终估算出整个执行计划的代价。

计划生成器:计划生成器会考虑可能的访问路径(Access Path)、关联的方法和关联的顺序,生成不同的执行计划,让查询优化器从这些计划中选择代价最小的一个执行计划。

行源生成器(Row Source Generator):行源生成器从查询优化器接收到优化的执行计划,然后为该计划生成行源(Row Source)。行源是一个可被迭代控制的结构体,它能以迭代方式处理一组数据行、并生成一组数据行。

1.2、sql执行引擎(sql Execution Engine)

sql执行引擎依照语句的执行计划进行操作,产生查询结果。在每一个操作中,sql执行行引擎会以迭代的方式执行行源、生成数据行。

1.3、执行计划的生成

当前实例内存中的执行计划,可以通过视图:v$sql_plan读取。

启用了awr时,oracle会将内存的执行计划存到历史数据中,我们可以通过查询sql语句,或者oracle提供的系统包dbms_xplan从历史数据中读取。

除了通过执行sql让oracle在内存中生成执行计划外,我们还可以通过命令Explain Plan让优化器仅对sql语句进行解释,生成执行计划,由于语句并不会真正执行,因此它可以含有没有赋值的绑定变量。执行explain plan命令后,oracle会将解释生成的查询计划插入表SYS.PLAN_TABLE$中。然后我们就可以通过查询语句或者包:dbms_xplan从该表中读取查询计划咯。

注意:通过explain plan解释出来的查询计划不会被缓存到内存中,供语句执行时重用。

2、pl/sql引擎介绍

时间: 2024-11-02 02:49:41

关于sql引擎 和 plsql引擎的相关文章

SQL Server 2000桌面引擎默认配置空口令漏洞

涉及程序:  SQL Server 2000 Desktop Engine,MSDE 1.0 描述: MSDE/SQL Server 2000桌面引擎默认配置空口令漏洞 详细: Microsoft SQL Server Desktop Engine(MSDE)是一款Microsoft用来提供数据库管理服务的产品. Microsoft SQL Server 2000 Desktop Engine是一款Microsoft分发的数据库SQL SERVER2000共享数据引擎. Microsoft SQ

SQL SERVER 2008数据库引擎详细介绍_mssql2008

SQL Server 的数据库引擎组件是用于存储.处理数据和保证数据安全的核心服务.数据库引擎提供受控的访问和快速事务处理,以满足企业中要求极高.大量使用数据的应用程序的要求. SQL Server 支持在同一台计算机上最多存在 50 个数据库引擎实例.对于本地安装,必须以管理员身份运行安装程序.如果从远程共享安装 SQL Server,则必须使用对远程共享具有读取和执行权限的域帐户. 高可用性解决方案概述 高可用性解决方案可减少硬件或软件故障造成的影响,保持应用程序的可用性,尽可能地减少用户所

ThinkPHP支持3.1.3的SAE引擎和云引擎版本更新

ThinkPHP支持3.1.3的SAE引擎和云引擎版本更新发布: 云引擎扩展 ThinkPHP的云引擎扩展是为云平台服务的ThinkPHP扩展.通常所说的云平台是指PaaS类型的http://www.aliyun.com/zixun/aggregation/13423.html">云计算平台(服务),他们的名称一般叫App Engine .如新浪的有SAE(Sina App Engine) ,百度有 BAE(Baidu App Engine),等等.可以看到当今云计算已经十分流行,但是云计

工作流引擎 和 规则引擎 区别?

问题描述 请问大家,我们公司在开发一套复杂的系统,前期业务逻辑不能准确确定下来,而且开发过程中,业务需求变化也是会有的.这种情况下,应该结合工作流引擎还是规则引擎来开发?我对这两个引擎都不是很熟悉,只是有个概念性的理解,工作流引擎一般用于逐级审批,规则引擎没有用过. 解决方案 解决方案二:工作流引擎现在演化为业务过程管理,最基本的概念还是业务过程的流转,而业务规则侧重业务逻辑的控制,比如零售行业的价格规则,它会针对客户商品/品类地理位置等设计一个非常复杂的价格管理体系:与业务规则非常紧密的是事件

启动服务器SQL Server 2005数据库引擎的方法

SQL2005数据库引擎没有启动的解决方法,SQL2005已经不再像SQL2000那样,单独有一个服务器管理... 数据库引擎没有启动. 有两种启动方式: (1)开始->程序->Microsoft SQL Server 2005->SQL Server 2005外围应用配置器,在打开的界面单击"服务的连接的外围应用配置器",在打开的界面中找到Database Engine,单击"服务",在右侧查看是否已启动,如果没有启动可单击"启动&qu

SQL Server 2008关系数据库引擎的新增功能

在SQL Server 2008中,关系数据库引擎的新增功能相对较多,本文将主要针对应用开发人员和数据库 管理员比较关心的新增特性进行详细的说明. 与开发人员相关的新增特性: Change Data Capture (CDC):变化数据捕获,可以捕获SQL Server数据表中的新增.修改和更新,并 以一种易于使用的格式提供.CDC是SQL Server 2008中新增的一项非常重要的功能,在BI应用中从业务数 据库抽取更新数据到数据仓库时非常有用.随后会有专文介绍CDC. DDL Trigge

使用Spark SQL构建交互式查询引擎

前言 StreamingPro 原来仅仅是用来作为Spark Streaming的一个配置化+SQL封装,然而不经意间,已经涵盖了批处理,交互式查询等多个方面.今天就讲讲如何使用StreamingPro构建一个交互式查询引擎. 准备工作 下载StreamingPro README中有下载地址 如果你使用了 Spark 2.0 版本,则要下载对应页面上的Spark 安装包.因为目前Spark 2.0 默认支持Scala 2.11.我提供了一个机遇Scala 2.10版本的.  我们假设您将文件放在

MySQL中MyISAM引擎与InnoDB引擎性能简单测试

[硬件配置] CPU : AMD2500+ (1.8G) 内存: 1G/现代 硬盘: 80G/IDE [软件配置] OS : Windows XP SP2 SE : PHP5.2.1 DB : MySQL5.0.37 Web: IIS6 [MySQL表结构] CREATE TABLE `myisam` ( `id` int(11) NOT NULL auto_increment, `name` varchar(100) default NULL, `content` text, PRIMARY

【HIMI转载推荐之三】基于COCOS2DX引擎UI扩展引擎包[COCOS2D-X-3C]

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/himi-zan/1556.html [前言点评] 此篇主要作者:jason-lee-lijunlin  基于Cocos2d-x引擎进行封装的UI框架的扩展包. 此文章Himi已经仔细看过,总体来说是篇很好的文章,是给使用-x引擎的童鞋们的福利-.真的非常感谢作者的分享,近两年 Himi看到了越来越多的开发者们将自己的作品与劳动成果无私放在网