Oracle 体系结构---SQL语句执行步骤

 

 SQL语句执行步骤

如果用户在SQL*Plus下输入查询语句:

SELECT * FROM dept;

如果一条查询语句执行成功,就要返回查询结果,假如执行失败,将返回错误信息。

查询语句的处理主要包括三个阶段:编译(parse)、执行(execute)、和提取数据(fetch)。

 

SQL> select * from dept;

    DEPTNO DNAME	  LOC
---------- -------------- -------------
	10 ACCOUNTING	  NEW YORK
	20 RESEARCH	  DALLAS
	30 SALES	  CHICAGO
	40 OPERATIONS	  BOSTON

编译阶段:在执行编译时,服务器将会将SQL语句的正文放入共享池(shared pool)的库高速缓存(library cache)中,并将完成以下处理。

•首先在共享池中搜索是否有相同的SQL语句(正文),如果没有就进行后续处理。

•检查该SQL语句的语法是否正确。

•通过查看数据字典来检查表和列的定义。

•对所有操作的对象加编译锁(parse locks),以便在编译语句期间对这些对象的定义不能改变。

•检查所引用对象的用户权限。

•生成执行该SQL语句所需的优化执行步骤。

•将SQL语句和执行计划装入共享的SQL区。

      以上的每一步操作都必须正确。如果不正确,数据库将返回错误信息。

•执行阶段:Oracle服务器进程开始执行SQL语句,因为它已获得了执行SQL语句所需的全部资源和信息。

•提取数据:Oracle服务器进程选择所需的数据行,并在需要时将其排序,最后将执行结果返回给用户(进程)。

 

posted @ 2016-05-13 15:11  珠烁晶莹  阅读(206)  评论(0编辑  收藏  举报