上海涛德顾问学院

上海涛德顾问学院 门户 查看主题

Oracle 数据库的SQL语句内存处理流程

发布者: 涛德教育 | 发布时间: 2014-5-31 13:01| 查看数: 12762| 评论数: 0|帖子模式

注:并非所有语句都需要执行以上全部步骤。例如,非并行的 DDL 语句只需要两个步骤:创建和分析。语句并行化需要确定语句是否可并行化,这与实际建立并行执行结构不同。

Oracle SQL 内部处理过程

Oracle SQL 内部处理过程
步骤 1:创建游标
游标可以看成是客户机程序中的游标数据区域与Oracle 服务器的数据结构之间的关联。大多数Oracle 工具向用户隐藏了许多游标处理过程
步骤 2:分析语句
在分析过程中,SQL 语句从用户进程传递到Oracle 实例,SQL 语句分析后的表示形式被加载到共享SQL 区。  
转换和验证时要检查库高速缓存中是否已存在相应的语句。
对于已分配的语句,要检查是否存在数据库链接。
通常,分析阶段代表生成查询计划的阶段。
步骤 3:描述
仅当不知道查询结果的特征时,才需要有描述阶段,例如,用户以交互方式输入查询。在这种情况下,描述阶段确定查询结果的特征(数据类型、长度和名称)。描述告诉应用程序需要哪些选择列表项。例如,如果输入如下查询:
SQL> select * from employees;
则需要有关employees 表中的列的信息。
步骤 4:定义
在定义阶段,将为所定义的接收提取值的变量指定位置、大小和数据类型。这些变量称为定义变量。必要时,Oracle DB 将执行数据类型转换。  
用户在使用SQL*Plus 之类的工具时通常看不到这两个步骤。但是,使用DBMS_SQL OCI 时,必须在客户机上指定输出数据和设置区域。
步骤 5:绑定
此时,Oracle DB 已知道SQL 语句的含义,但现有的信息仍不足以运行语句。Oracle DB 还需要语句中列出的所有变量的值。获取这些值的过程称为绑定变量。
步骤 6:并行化
Oracle DB 可以并行执行 SQL 语句(如 SELECTINSERTUPDATEMERGE DELETE)以及一些 DDL 操作(如创建索引、创建含子查询的表和针对分区的操作)。并行化将使多个服务器进程执行SQL 语句的工作,因此可以加快完成速度。  
并行化会将一条语句的工作拆分给多个从属进程。
步骤 7
此时,Oracle DB 拥有所有必要的信息和资源,因此执行语句。
步骤8
在提取阶段,选择行并对行进行排序(如果查询要求),而且每个后续提取操作都会检索另一行结果,直到提取完最后一行为止。
步骤 9
处理SQL 语句的最后一个阶段是关闭游标

最新评论

涛德人工智能培训5月最低年薪45万

上海涛德顾问学院 ( 沪ICP备14006824号 )  

GMT+8, 2018-9-22 20:14 , Processed in 0.231684 second(s), 31 queries , Gzip On.

Top Data World

回顶部