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服务器进程选择所需的数据行,并在需要时将其排序,最后将执行结果返回给用户(进程)。