SQL语句的执行过程.pptx
上传人:王子****青蛙 上传时间:2024-09-12 格式:PPTX 页数:29 大小:118KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

SQL语句的执行过程.pptx

SQL语句的执行过程.pptx

预览

免费试读已结束,剩余 19 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

SQL语句的执行过程♦SQL语句的执行过程♦数据库的内存结构DDL(数据定义语言)DML(数据操纵语言)修改Oracle数据字典所执行的语句。它们是创建表、增加用户、删除表中的列、创建触发器等的语句例如:CREATETABLE、CREATEUSER、CREATEPACKAGE、ALTERTABLE、CREATEPROCEDURE访问和修改数据库中数据所执行的语句。这些语句包括SELECT、INSERT、MERGE、UPDATE和DELETE命令Oracle执行一条语句从开始到结束经过4个步骤:分析对提交的语句进行语法和语义检查优化生成一个可在数据库中用来执行语句的最佳计划行资源生成为会话取得最佳计划和建立执行计划语句执行完成实际执行查询的行资源生成步骤的输出语法分析查询是不是合法的语句语义分析如果是合法的语句,还需要检查是否具有访问权限、访问的列是否在所访问的表中、是否存在歧义共享池检查如果是DML语句还需要进行共享池检查,此语句是否已经被其他用户分析过且Oracle可重用已经执行的工作,如果是就进行软分析,如果不是就进行硬分析。DDL总是硬分析,从不重用共享池概念是Oracle体系结构的一个关键成分。共享池是Oracle共享全局区(SGA)中的一块内存,其中库高速缓存区存放以前执行过的SQL语句、PL/SQL代码,数据字典高速缓存区存放字典信息硬分析软分析分析查询检查语法验证语义计算散列值找到一个匹配验证存在一个与我们的查询完全相同的查询(引用相同的对象)确认我们具有访问所有引用对象的必须的权限验证语句在相同的环境中执行如果是软分析就直接跳过下面的优化和行资源生成这一重要步骤所有DML语句第一次提交给Oracle时,在它们的生存期中至少要优化一次。优化发生在硬分析中。语句义上和语法上完全相同,且执行环境也相同的语句的执行可以利用以前硬分析的工作。在此情形下,对它们进行软分析。硬分析包括查询优化步骤。这是一种费劲的、CPU密集型的处理过程,所花的时间可能比语句的实际执行时间还要长。查询优化工作是要找到可能是最好的执行计划基于规则的优化程序(RBO)这种优化程序基于一组规则建立查询计划。它不考虑对象尺寸、列的基数、数据的分布、排序区尺寸以及其它因素。查询优化只能利用已经编好的规则。基于成本的优化程序(CBO)这种优化程序根据收集的实际访问数据的统计信息对查询进行优化。在确定最合适的计划是,它将使用行数、数据集的尺寸以及许多其他信息。CBO将生成许多(或许数千)可能的查询计划(解决查询的预备途径),并给每个查询计划赋予一个数值成本。采用具有最低成本的查询计划优化之后就是行资源生成,行资源生成器是Oracle中的一个软件,它接受优化程序的输出,将它格式化为实际的执行计划。例如:在使用SQL*PLUS中的AUTOTRACE实用程序时,它打印查询计划语句执行的最后步骤是利用资源生成器的输出实际执行语句。它是DML执行中唯一的强制性的步骤。可以跳过分析、优化和行资源生成步骤。反复执行语句。因为这是目前为止最高效的方法,只要有可能,我们都希望建立符合“分析一次,执行许多次”规则的应用程序。OVERALLTOTALSFORALLNON-RECURSIVESTATEMENTScallcountcpuelapseddiskquerycurrentrows-----------------------------------------------------------------------Parse120.040.120200Execute120.020.0402682923Fetch48560.860.8107703072673-----------------------------------------------------------------------total48800.930.98079732972696count:提供OCI过程的执行次数CPU:提供执行CPU所花的时间单位是秒Elapsed:提供了执行时所花的时间。单位是秒。这个参数值等于用户响应时间Disk:提供缓存区从磁盘读取的次数Query:以一致性模式从缓存区获得数据的次数Current:以当前模式从缓存区获得数据的次数ROWs:返回调用或执行调用时,处理的数据行的数量。10:34:55SQL>select*fromdept;Elapsed:00:00:00.10ExecutionPlan----------------------------------------------------------Planhashvalue:3383998547