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

下载本文档

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

文档简介

1、以及数据库内存结构拓明科技Oracle数据库内部培训资料拓明科技Oracle数据库内部培训资料DDL(数据定义语言)DML(数据操纵语言)拓明科技Oracle数据库内部培训资料修改Oracle数据字典所执行的语句。它们是创建表、增加用户、删除表中的列、创建触发器等的语句例如: CREATE TABLE、CREATE USER、CREATE PACKAGE、ALTER TABLE、CREATE PROCEDURE拓明科技Oracle数据库内部培训资料访问和修改数据库中数据所执行的语句。这些语句包括SELECT、INSERT、MERGE、UPDATE和DELETE命令拓明科技Oracle数据库内部

2、培训资料Oracle执行一条语句从开始到结束经过4个步骤:分析 对提交的语句进行语法和语义检查优化 生成一个可在数据库中用来执行语句的最佳计划行资源生成 为会话取得最佳计划和建立执行计划语句执行 完成实际执行查询的行资源生成步骤的输出拓明科技Oracle数据库内部培训资料语法分析查询是不是合法的语句语义分析如果是合法的语句,还需要检查是否具有访问权限、访问的列是否在所访问的表中、是否存在歧义共享池检查如果是DML语句还需要进行共享池检查,此语句是否已经被其他用户分析过且Oracle可重用已经执行的工作,如果是就进行软分析,如果不是就进行硬分析。DDL总是硬分析,从不重用拓明科技Oracle数据

3、库内部培训资料共享池概念是Oracle体系结构的一个关键成分。共享池是Oracle共享全局区(SGA)中的一块内存,其中库高速缓存区存放以前执行过的SQL语句、PL/SQL代码,数据字典高速缓存区存放字典信息硬分析软分析拓明科技Oracle数据库内部培训资料分析查询检查语法验证语义计算散列值找到一个匹配验证存在一个与我们的查询完全相同的查询(引用相同的对象)确认我们具有访问所有引用对象的必须的权限验证语句在相同的环境中执行如果是软分析就直接跳过下面的优化和行资源生成这一重要步骤拓明科技Oracle数据库内部培训资料所有DML语句第一次提交给Oracle时,在它们的生存期中至少要优化一次。优化发

4、生在硬分析中。语句义上和语法上完全相同,且执行环境也相同的语句的执行可以利用以前硬分析的工作。在此情形下,对它们进行软分析。硬分析包括查询优化步骤。这是一种费劲的、CPU密集型的处理过程,所花的时间可能比语句的实际执行时间还要长。查询优化工作是要找到可能是最好的执行计划拓明科技Oracle数据库内部培训资料基于规则的优化程序(RBO)这种优化程序基于一组规则建立查询计划。它不考虑对象尺寸、列的基数、数据的分布、排序区尺寸以及其它因素。查询优化只能利用已经编好的规则。基于成本的优化程序(CBO)这种优化程序根据收集的实际访问数据的统计信息对查询进行优化。在确定最合适的计划是,它将使用行数、数据集

5、的尺寸以及许多其他信息。CBO将生成许多(或许数千)可能的查询计划(解决查询的预备途径),并给每个查询计划赋予一个数值成本。采用具有最低成本的查询计划拓明科技Oracle数据库内部培训资料优化之后就是行资源生成,行资源生成器是Oracle中的一个软件,它接受优化程序的输出,将它格式化为实际的执行计划。例如:在使用SQL*PLUS中的AUTOTRACE实用程序时,它打印查询计划拓明科技Oracle数据库内部培训资料语句执行的最后步骤是利用资源生成器的输出实际执行语句。它是DML执行中唯一的强制性的步骤。可以跳过分析、优化和行资源生成步骤。反复执行语句。因为这是目前为止最高效的方法,只要有可能,我

6、们都希望建立符合“分析一次,执行许多次”规则的应用程序。拓明科技Oracle数据库内部培训资料OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTScall count cpu elapsed disk query current rows- - - - - - - -Parse 12 0.04 0.12 0 2 0 0Execute 12 0.02 0.04 0 268 29 23Fetch 4856 0.86 0.81 0 7703 0 72673- - - - - - - -total 4880 0.93 0.98 0 7973 29 72696c

7、ount:提供OCI过程的执行次数CPU: 提供执行CPU所花的时间单位是秒Elapsed:提供了执行时所花的时间。单位是秒。这个参数值等于用户响应时间Disk:提供缓存区从磁盘读取的次数Query:以一致性模式从缓存区获得数据的次数Current:以当前模式从缓存区获得数据的次数ROWs: 返回调用或执行调用时,处理的数据行的数量。拓明科技Oracle数据库内部培训资料10:34:55 SQL select * from dept;Elapsed: 00:00:00.10Execution Plan-Plan hash value: 3383998547-| Id | Operation |

8、 Name | Rows | Bytes | Cost (%CPU)| Time |-| 0 | SELECT STATEMENT | | 4 | 120 | 3 (0)| 00:00:01 | 1 | TABLE ACCESS FULL| DEPT | 4 | 120 | 3 (0)| 00:00:01 |-Note- - dynamic sampling used for this statement (level=2)Statistics- 279 recursive calls 0 db block gets 58 consistent gets 8 physical reads 0

9、redo size 1630 bytes sent via SQL*Net to client 524 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 4 rows processed拓明科技Oracle数据库内部培训资料10:35:00 SQL /Elapsed: 00:00:00.02Execution Plan-Plan hash value: 3383998547-| Id | Operation | Name | Row

10、s | Bytes | Cost (%CPU)| Time |-| 0 | SELECT STATEMENT | | 4 | 120 | 3 (0)| 00:00:01 | 1 | TABLE ACCESS FULL| DEPT | 4 | 120 | 3 (0)| 00:00:01 |-Note- - dynamic sampling used for this statement (level=2)Statistics- 0 recursive calls 0 db block gets 8 consistent gets 0 physical reads 0 redo size 802

11、bytes sent via SQL*Net to client 524 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 4 rows processed拓明科技Oracle数据库内部培训资料11:31:43 SQL l 1* select * from dept order by 1Elapsed: 00:00:00.03Execution Plan-Plan hash value: 120787663-| Id | Opera

12、tion | Name | Rows | Bytes | Cost (%CPU)| Time |-| 0 | SELECT STATEMENT | | 4 | 120 | 4 (25)| 00:00:01 | 1 | SORT ORDER BY | | 4 | 120 | 4 (25)| 00:00:01 | 2 | TABLE ACCESS FULL| DEPT | 4 | 120 | 3 (0)| 00:00:01 |-Note- - dynamic sampling used for this statement (level=2)Statistics- 0 recursive call

13、s 0 db block gets 7 consistent gets 0 physical reads 0 redo size 794 bytes sent via SQL*Net to client 524 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 4 rows processed拓明科技Oracle数据库内部培训资料alter system flush shared_pool;alter system flush bu

14、ffer_cache;Elapsed: 00:00:00.20Execution Plan-Plan hash value: 120787663-| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |-| 0 | SELECT STATEMENT | | 4 | 120 | 4 (25)| 00:00:01 | 1 | SORT ORDER BY | | 4 | 120 | 4 (25)| 00:00:01 | 2 | TABLE ACCESS FULL| DEPT | 4 | 120 | 3 (0)| 00:00:01 |-N

15、ote- - dynamic sampling used for this statement (level=2)Statistics- 1195 recursive calls 0 db block gets 203 consistent gets 32 physical reads 0 redo size 794 bytes sent via SQL*Net to client 524 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 13 sorts (memory) 0 sorts (d

16、isk) 4 rows processed拓明科技Oracle数据库内部培训资料数据库缓冲区高速缓存共享池重做日志缓冲区Java池(Java Pool)大池(Large Pool)流池(Stream Pool)拓明科技Oracle数据库内部培训资料 拓明科技Oracle数据库内部培训资料SGA共享池Java池流池库高速缓存数据字典缓存DB CACHE SIZELog Buffer大池用于存储 最近执行的SQL语句 最近使用的数据定义包括的内存结构 库高速缓存 数据字典高速缓存拓明科技Oracle数据库内部培训资料库高速缓存包括以下两个结构: 共享SQL:共享SQL 为针对数据库运行的SQL 语

17、句存储并共享执行计划和 语法分析树。下次运行同一SQL 语句时,这个语句就能利用共享SQL 提供的语法分析信息来加快其执行速度。要确保SQL 语句随时可以使用共享SQL 区,文本、方案和绑定变量必须完全相同。 共享PL/SQL:共享PL/SQL 区存储并共享最近执行的PL/SQL 语句。经过语法分析和编译的程序单元和过程(函数、程序包和触发器)都存储在这个区中拓明科技Oracle数据库内部培训资料数据库中最近使用的定义的集合包括与数据库文件、表、索引、列、用户、权限和其它数据库对象相关的信息在语法分析阶段,服务器进程会在数据字典中查找用于解析对象名和验证访问的信息将数据字典信息高速缓存到内存中

18、,可缩短查询和DMLDML的响应时间拓明科技Oracle数据库内部培训资料存储已从数据文件中检索到的数据块的副本能够大幅提高获取和更新数据时的性能通过LRU LRU 算法管理算法管理 处理查询时,Oracle 服务器进程在数据库缓冲区高速缓存中查找任何所需的块。如果未在数据库缓冲区高速缓存中找到这个块,服务器进程就从数据文件读取这个块,并在数据库缓冲区高速缓存中放置一个副本。由于对同一个块的后续请求可以在内存中找到这个块,因此这些请求可能不需要进行物理读取。拓明科技Oracle数据库内部培训资料Oracle 服务器使用LRU (最近最少使用算法)算法来释放近期未被访的缓冲区,以便在数据库缓冲区高速缓存中为新块腾出空间拓明科技Oracle数据库内部培训资料记录对数据库数据块所做的全部更改主要用于恢复其中记录的更改称作重做条目重做条目包含用于重新构造或重做更改的信息 重做日志缓冲区是一个循环缓冲区,它包含对数据文件块所做的各种更改。此信息存储在重做条目中。重做条目包含将数据恢复到使用INSERT、UPDATE、DELETE、CREATE、ALTER、或DROP 操作进行更改前的状态所需要的信息。拓明科技Oracle数据库内部培训资料Statistics- 25 r

温馨提示

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

评论

0/150

提交评论