收藏本站

人工智能培训机构,上海涛德,算法工程师,数据科学家高端培训机构-上海涛德

Oracle 性能调优:SQL语句处理的步骤与原理

2013-4-17 16:04| 查看: 1680| 评论: 0

摘要: Oracle SQL语句分为以下9个处理的步骤 1. 创建游标。 2. 分析语句。 3. 描述查询结果。 4. 定义查询输出。 5. 绑定变量。 6. 语句并行化。 7. 执行语句。 8. 提取查询的行。 9关闭游标 步骤 1:创建游标 游 ...

Oracle SQL语句分为以下9个处理的步骤

创建游标。

分析语句。

描述查询结果。

定义查询输出。

绑定变量。

语句并行化。

执行语句。

提取查询的行。

关闭游标

步骤 1:创建游标

游标可以看成是客户机程序中的游标数据区域与 Oracle 服务器的数据结构之间的关联。大多数 Oracle 工具向用户隐藏了许多游标处理过程,但 Oracle 调用接口 (OCI) 程序需要有一定的灵活性,以便可以单独处理查询执行的每个部分。因此,预编译器允许使用显式游标声明。也可以使用 DBMS_SQL 程序包完成以上大部分操作。

句柄类似于杯子的把手。如果持有了句柄,就持有了游标。它是某个特定游标的唯一标识符,一次只能由一个进程获取。

要处理 SQL 语句,程序必须要有一个打开的游标。游标包含一个指向当前行的指针。指针会在提取行时移动,直到不再有要处理的行为止。

步骤 2:分析语句

在分析过程中,SQL 语句从用户进程传递到 Oracle 实例,SQL 语句分析后的表示形式被加载到共享 SQL 区。 

转换和验证时要检查库高速缓存中是否已存在相应的语句。

对于已分配的语句,要检查是否存在数据库链接。

通常,分析阶段代表生成查询计划的阶段。

客户机软件可以延迟分析步骤以降低网络流量。也就是说,PARSE EXECUTE 捆绑在一起执行,因此减少了到服务器的往返次数。

步骤 3:描述

仅当不知道查询结果的特征时,才需要有描述阶段,例如,用户以交互方式输入查询。在这种情况下,描述阶段确定查询结果的特征(数据类型、长度和名称)。描述告诉应用程序需要哪些选择列表项。例如,如果输入如下查询:

SQL> select * from databi;

则需要有关 databi 表中的列的信息。

步骤 4:定义

在定义阶段,将为所定义的接收提取值的变量指定位置、大小和数据类型。这些变量称为定义变量。必要时,Oracle DB 将执行数据类型转换。 

用户在使用 SQL*Plus 之类的工具时通常看不到这两个步骤。但是,使用 DBMS_SQL OCI 时,必须在客户机上指定输出数据和设置区域。

步骤 5:绑定

此时,Oracle DB 已知道 SQL 语句的含义,但现有的信息仍不足以运行语句。Oracle DB 还需要语句中列出的所有变量的值。获取这些值的过程称为绑定变量。

步骤 6:并行化

Oracle DB 可以并行执行 SQL 语句(如 SELECTINSERTUPDATEMERGE DELETE)以及一些 DDL 操作(如创建索引、创建含子查询的表和针对分区的操作)。并行化将使多个服务器进程执行 SQL 语句的工作,因此可以加快完成速度。 

并行化会将一条语句的工作拆分给多个从属进程。

在分析时已经确定了语句是否可并行化,并建立了相应的并行计划。在执行时即可实施此计划(如果有足够的可用资源)。

步骤 7 到步骤 9

此时,Oracle DB 拥有所有必要的信息和资源,因此执行语句。如果语句是一个查询(不带 FOR UPDATE 子句)语句,则不需要锁定任何行,因为没有更改任何数据。但是,如果语句是 UPDATE 语句或 DELETE 语句,则在下一次对事务处理执行 COMMITROLLBACK SAVEPOINT 之前受该语句影响的所有行都将被锁住。这样可以确保数据的完整性。

对于有些语句,可以指定执行次数。这称为数组处理。假定执行次数为 n,则绑定和定义位置步骤要在大小为 n 的数组开始时完成。

在提取阶段,选择行并对行进行排序(如果查询要求),而且每个后续提取操作都会检索另一行结果,直到提取完最后一行为止。 

处理 SQL 语句的最后一个阶段是关闭游标。

 最后:请注意,并非所有语句都需要执行以上全部步骤。例如,非并行的 DDL 语句只需要两个步骤:创建和分析

<点击:上海涛德Oracle OCM认证及BI商业智能课程>|人工智能培训-上海涛德 ( 沪ICP备14006824号 )|网站地图   My title page contents

GMT+8, 2019-7-18 22:44 , Processed in 0.114591 second(s), 14 queries , Gzip On.

回顶部