SQL语句的执行过程(一)_第1页
SQL语句的执行过程(一)_第2页
SQL语句的执行过程(一)_第3页
SQL语句的执行过程(一)_第4页
SQL语句的执行过程(一)_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQL语句的执行过程以及数据库内存结构♦SQL语句的执行过程

♦数据库的内存结构DDL(数据定义语言)DML(数据操纵语言)SQL语句的类型修改Oracle数据字典所执行的语句。它们是创建表、增加用户、删除表中的列、创建触发器等的语句例如:CREATETABLE、CREATEUSER、CREATEPACKAGE、ALTERTABLE、CREATEPROCEDUREDDL(数据定义语言)访问和修改数据库中数据所执行的语句。这些语句包括SELECT、INSERT、MERGE、UPDATE和DELETE命令DML(数据操纵语言)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--------------------------------------------------------------------------|Id|Operation|Name|Rows|Bytes|Cost(%CPU)|Time|--------------------------------------------------------------------------|0|SELECTSTATEMENT||4|120|3(0)|00:00:01||1|TABLEACCESSFULL|DEPT|4|120|3(0)|00:00:01|--------------------------------------------------------------------------Note------dynamicsamplingusedforthisstatement(level=2)Statistics----------------------------------------------------------279recursivecalls0dbblockgets58consistentgets8physicalreads0redosize1630bytessentviaSQL*Nettoclient524bytesreceivedviaSQL*Netfromclient2SQL*Netroundtripsto/fromclient0sorts(memory)0sorts(disk)4rowsprocessed10:35:00SQL>/Elapsed:00:00:00.02ExecutionPlan----------------------------------------------------------Planhashvalue:3383998547--------------------------------------------------------------------------|Id|Operation|Name|Rows|Bytes|Cost(%CPU)|Time|--------------------------------------------------------------------------|0|SELECTSTATEMENT||4|120|3(0)|00:00:01||1|TABLEACCESSFULL|DEPT|4|120|3(0)|00:00:01|--------------------------------------------------------------------------Note------dynamicsamplingusedforthisstatement(level=2)Statistics----------------------------------------------------------0recursivecalls0dbblockgets8consistentgets0physicalreads0redosize802bytessentviaSQL*Nettoclient524bytesreceivedviaSQL*Netfromclient2SQL*Netroundtripsto/fromclient0sorts(memory)0sorts(disk)4rowsprocessed11:31:43SQL>l1*select*fromdeptorderby1Elapsed:00:00:00.03ExecutionPlan----------------------------------------------------------Planhashvalue:120787663---------------------------------------------------------------------------|Id|Operation|Name|Rows|Bytes|Cost(%CPU)|Time|---------------------------------------------------------------------------|0|SELECTSTATEMENT||4|120|4(25)|00:00:01||1|SORTORDERBY||4|120|4(25)|00:00:01||2|TABLEACCESSFULL|DEPT|4|120|3(0)|00:00:01|---------------------------------------------------------------------------Note------dynamicsamplingusedforthisstatement(level=2)Statistics----------------------------------------------------------0recursivecalls0dbblockgets7consistentgets0physicalreads0redosize794bytessentviaSQL*Nettoclient524bytesreceivedviaSQL*Netfromclient2SQL*Netroundtripsto/fromclient1sorts(memory)0sorts(disk)4rowsprocessedaltersystemflushshared_pool;altersystemflushbuffer_cache;Elapsed:00:00:00.20ExecutionPlan----------------------------------------------------------Planhashvalue:120787663---------------------------------------------------------------------------|Id|Operation|Name|Rows|Bytes|Cost(%CPU)|Time|---------------------------------------------------------------------------|0|SELECTSTATEMENT||4|120|4(25)|00:00:01||1|SORTORDERBY||4|120|4(25)|00:00:01||2|TABLEACCESSFULL|DEPT|4|120|3(0)|00:00:01|---------------------------------------------------------------------------Note------dynamicsamplingusedforthisstatement(level=2)Statistics----------------------------------------------------------1195recursivecalls0dbblockgets203consistentgets32physicalreads0redosize794bytessentviaSQL*Nettoclient524bytesreceivedviaSQL*Netfromclient2SQL*Netroundtripsto/fromclient13sorts(memory)0sorts(disk)4rowsprocessed数据库缓冲区区高速缓存共享池重做日志缓冲冲区Java池(JavaPool)大池(LargePool)流池(StreamPool)数据库内存结结构SGA共享池Java池流池库高速缓存数据字典缓存存DBCACHESIZELogBuffer大池用于存储最近执行的SQL语句最近使使用的的数据据定义义包括的的内存存结构构库高速速缓存存数据字字典高高速缓缓存共享池池库高速速缓存存包括括以下下两个个结构构:共享SQL:共享享SQL为针对对数据据库运运行的的SQL语句存存储并并共享享执行行计划划和语语法分分析树树。下下次运运行同同一SQL语句时时,这这个语语句就就能利利用共共享SQL提供的的语法法分析析信息息来加加快其其执行行速度度。要要确保保SQL语句随随时可可以使使用共共享SQL区,文文本、、方案案和绑绑定变变量必必须完完全相相同。。共享PL/SQL:共享享PL/SQL区存储储并共共享最最近执执行的的PL/SQL语句。。经过过语法法分析析和编编译的的程序序单元元和过过程((函数数、程程序包包和触触发器器)都都存储储在这这个区区中库高速速缓存存数据库库中最最近使使用的的定义义的集集合包括与与数据据库文文件、、表、、索引引、列列、用用户、、权限限和其其它数数据库库对象象相关关的信信息在语法法分析析阶段段,服服务器器进程程会在在数据据字典典中查查找用用于解解析对对象名名和验验证访访问的的信息息将数据据字典典信息息高速速缓存存到内内存中中,可可缩短短查询询和DML的响应应时间间数据字字典高高速缓缓存存储已已从数数据文文件中中检索索到的的数据据块的的副本本能够大大幅提提高获获取和和更新新数据据时的的性能能通过LRU算法管管理处理查查询时时,Oracle服务器器进程程在数数据库库缓冲冲区高高速缓缓存中中查找找任何何所需需的块块。如如果未未在数数据库库缓冲冲区高高速缓缓存中中找到到这个个块,,服务务器进进程就就从数数据文文件读读取这这个块块,并并在数数据库库缓冲冲区高高速缓缓存中中放置置一个个副本本。由由于对对同一一个块块的后后续请请求可可以在在内存存中找找到这这个块块,因因此这这些请请求可可能不不需要要进行行物理理读取取。数据库库缓冲冲区高高速缓缓存Oracle服务器器使用用LRU(最近近最少少使用用算法法)算算法来来释放放近期期未被被访的的缓冲冲区,,以便便在数数据库库缓冲冲区高高速缓缓存中中为新新块腾腾出空空间记录对对数据据库数数据块块所做做的全全部更更改主要用用于恢恢复其中记记录的的更改改称作作重做做条目目重做条条目包包含用用于重重新构构造或或重做做更改改的信信息重做日日志缓缓冲区区是一一个循循环缓缓冲区区,它它包含含对数数据文文件块块所做做的各各种更更改。。此信信息存存储在在重做做条目目中。。重做做条目目包含含将数数据恢恢复到到使用用INSERT、UPDATE、DELETE、CREATE、ALTER、或DROP操作进进行更更改前前的状状态所所需要要的信信息。。重做日日志缓缓冲区区Statistics----------------------------------------------------------25recursivecalls0dbblockgets2962024consistentgets45465physicalreads0redosize3972bytessentviaSQL*Nettoclient531bytesreceivedviaSQL*Netfromclient3SQL*Netroundtripsto/fromclient0sorts(memory)0sorts(disk)22rowsprocessed谢谢大家9、静静夜夜四四无无邻邻,,荒荒居居旧旧业业贫贫。。。。1月月-231月月-23Wednesday,January4,202310、雨雨中中黄黄叶叶树树,,灯灯下下白白头头人人。。。。23:04:5823:04:5823:041/4/202311:04:58PM11、以我独独沈久,,愧君相相见频。。。1月-2323:04:5823:04Jan-2304-Jan-2312、故人江海海别,几度度隔山川。。。23:04:5823:04:5823:04Wednesday,January4,202313、乍见见翻疑疑梦,,相悲悲各问问年。。。1月-231月-2323:04:5823:04:58January4,202314、他乡生白白发,旧国国见青山。。。04一月月202311:04:58下下午23:04:581月-2315、比不了了得就不不比,得得不到的的就不要要。。。。一月2311:04下下午1月-2323:04January4,202316、行动出成果果,工作出财财富。。2023/1/423:04:5823:04:5804January202317、做做前前,,能能够够环环视视四四周周;;做做时时,,你你只只能能或或者者最最好好沿沿着着以以脚脚为为起起点点的的射射线线向向前前。。。。11:04:58下下午午11:04下下午午23:04:581月月-239、没有有失败败,只只有暂暂时停停止成成功!!。1月-231月-23Wednesday,January4,202310、很很多多事事情情努努力力了了未未必必有有结结果果,,但但是是不不努努力力却却什什么么改改变变也也没没有有。。。。23:04:5823:04:5823:041/4/202311:04:58PM11、成功就是日日复一日那一一点点小小努努力的积累。。。1月-2323:04:5823:04Jan-2304-Jan-2312、世间成事,,不求其绝对对圆满,留一一份不足,可可得无限完美美。。23:04:5823:04:5823:04Wednesday,January4,202313、不知香积积寺,数里里入云峰。。。1月-231月-2323:04:5823:04:58January4,202314、意意志志坚坚强强的的人人能能把把世世界界放放在在手手中中像像泥泥块块一一样样任任意意揉揉捏捏。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论