Oracle SQL执行计划的简单分析_第1页
Oracle SQL执行计划的简单分析_第2页
Oracle SQL执行计划的简单分析_第3页
全文预览已结束

付费下载

下载本文档

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

文档简介

我们对SQL语句进行调优时,非常重要的一个方法就是分析SQL的执行计划。查看Oracle中SQL语句的执行计划有很多方法,例如通过PL/SQLDeveloper、EM或者SQLPLUS工具等。这里以SQLPLUS为例。在SQLPLUS使用命令SETAUTOTRACEON后,可以在查询结果后看到该语句的执行计划。也可以使用SETAUTOTRACETRACEONLY命令,只返回执行计划而不返回查询结果。例如执行一个简单的全表扫描语句,返回执行计划如下:

从上述执行计划可以看到,对表的访问为全表扫描(TABLEACCESSFULL)。这种情况一般是没有索引或者索引不可用。我们执行的SQL语句是select*fromhr.employees,该语句没有指定搜索条件,所以也只能是全表扫描。接下来我们还可以看到一些关于执行计划的统计信息。对于这些信息的分析非常重要。通过查询Oracle的文档,可以看到具体解释如下:RecursiveCalls:Numberofrecursivecallsgeneratedatboththeuserandsystemlevel.OracleDatabasemaintainstablesusedforinternalprocessing.Whenitneedstochangethesetables,OracleDatabasegeneratesaninternalSQLstatement,whichinturngeneratesarecursivecall.Inshort,recursivecallsarebasicallySQLperformedonbehalfofyourSQL.So,ifyouhadtoparsethequery,forexample,youmighthavehadtorunsomeotherqueriestogetdatadictionaryinformation.Thesewouldberecursivecalls.Spacemanagement,securitychecks,callingPL/SQLfromSQL—allincurrecursiveSQLcalls.(意思大概是我们的SQL执行中需要对数据库系统的一些内部表进行操作,如关于空间管理的检查、安全检查以及调用PL/SQL等,这些都会产生递归调用。)DBBlockGets:NumberoftimesaCURRENTblockwasrequested.Currentmodeblocksareretrievedastheyexistrightnow,notinaconsistentreadfashion.Normally,blocksretrievedforaqueryareretrievedastheyexistedwhenthequerybegan.Currentmodeblocksareretrievedastheyexistrightnow,notfromapreviouspointintime.DuringaSELECT,youmightseecurrentmoderetrievalsduetoreadingthedatadictionarytofindtheextentinformationforatabletodoafullscan(becauseyouneedthe"rightnow"information,nottheconsistentread).Duringamodification,youwillaccesstheblocksincurrentmodeinordertowritetothem.(DBBlockGets:当前模式块被请求的数量。当前模式块与一致性读取块相对,当前模式块是数据块现在的状态,而一致性读取块是放在回滚段中的数据块的旧的映像。DBBlockGets请求的数据块在buffercache可以得到满足。)ConsistentGets:Numberoftimesaconsistentreadwasrequestedforablock.Thisishowmanyblocksyouprocessedin"consistentread"mode.Thiswillincludecountsofblocksreadfromtherollbacksegmentinordertorollbackablock.ThisisthemodeyoureadblocksinwithaSELECT,forexample.Also,whenyoudoasearchedUPDATE/DELETE,youreadtheblocksinconsistentreadmodeandthengettheblockincurrentmodetoactuallydothemodification.(ConsistentGets:请求的一致性读取模式下的数据块的数量。ConsistentGets的数据请求在回滚段Buffer中得到满足。)PhysicalReads:Totalnumberofdatablocksreadfromdisk.Thisnumberequalsthevalueof"physicalreadsdirect"plusallreadsintobuffercache.(PhysicalReads:请求的数据块在buffercache中没有的话,就需要读取磁盘上的数据文件。这里指的就是从磁盘读到BufferCache的数据块数量。)Redosize:对数据块进行修改时,会将旧的内容写入回滚段,用于一致性读取操作。这里的redosize指的是操作产生的redo信息数量,单位是字节。Sorts(disk):Numberofsortoperationsthatrequiredatleastonediskwrite.SortsthatrequireI/Otodiskarequiteresourceintensive.TryincreasingthesizeoftheinitializationparameterSORT_AREA_SIZE.(Sorts(disk):排序操作首先会使用内存空间的SORT_AREA_SIZE,如果不足则会使用临时表空间,这样就产生了磁盘访问。磁盘中的排序非常消耗资源,建议调整SORT_AREA_SIZE参数的值。)通常在第一次访问某个表时,会产生PhysicalReads,因为要从数据文件读取数据块。但

温馨提示

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

评论

0/150

提交评论