Oracle项目部专题知识总结提炼性能优化培训文档Author:Wenfeng.ZhangCreationDate:April4,2021LastUpdated:April4,2021April4,2021DocumentRef:Version:DRAFT1AApprovals:DocumentControlChangeRecord4日期作者版本变更说明April4,2021Zhangwenfeng1.0NoPreviousDocumentReviewers姓名职位Distribution拷贝编号姓名位置/岗位1234第2页共xl页第3页共40页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第3页共40页性能优化简介性能优化简介本文档主要介绍与SQL调整有关的内容,内容涉及多个方面:SQL语句执行的过程、ORACLE优化器,表之间的关联,如何得到SQL执行计划,如何分析执行计划等内容,从而由浅到深的方式了解SQL优化的过程,使大家逐步步入SQL调整之门,然后你将发现……第1章SQL语句处理的过程在调整之前我们需要了解一些背景知识,只有知道这些背景知识,我们才能更好的去调整sql语句。本节介绍了SQL语句处理的基本过程,主要包括:•查询语句处理•DML语句处理(insert,update,delete)•DDL语句处理(create..,drop..,alter..,)•事务控制(commit,rollback)SQL语句的执行过程(SQLStatementExecution)图3-1概要的列出了处理和运行一个sql语句的需要各个重要阶段。在某些情况下,Oracle运行sql的过程可能与下面列出的各个阶段的顺序有所不同。如DEFINE阶段可能在FETCH阶段之前,这主要依赖你如何书写代码。对许多oracle的工具来说,其中某些阶段会自动执行。绝大多数用户不需要关心各个阶段的细节问题,然而,知道执行的各个阶段还是有必要的,这会帮助你写出更高效的SQL语句来,而且还可以让你猜测出性能差的SQL语句主要是由于哪一个阶段造成的,然后我们针对这个具体的阶段,找出解决的办法。第4页共40页第3页共40页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第4页共40页7第5页共40页第4页共40页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第5页共40页图3-1SQL语句处理的各个阶段DML语句的处理本节给出一个例子来说明在DML语句处理的各个阶段到底发生了什么事情。假设你使用Pro*C程序来为指定部门的所有职员增加工资。程序已经连到正确的用户,你可以在你的程序中嵌入如下的SQL语句:EXECSQLUPDATEemployeesSETsalary=1.10*salaryWHEREdepartment_id=:var_department_id;8第5页共40页第6页共40页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第6页共40页var_department_id是程序变量,里面包含部门号,我们要修改该部门的职员的工资。当这个SQL语句执行时,使用该变量的值。每种类型的语句都需要如下阶段:•第1步:CreateaCursor创建游标•第2步:ParsetheStatement分析语句•第5步:BindAnyVariables绑定变量•第7步:RuntheStatement运行语句•第9步:ClosetheCursor关闭游标如果使用了并行功能,还会包含下面这个阶段:•第6步:ParallelizetheStatement并行执行语句如果是查询语句,则需要以下几个额外的步骤,如图3所示:•第3步:DescribeResultsofaQuery描述查询的结果集•第4步:DefineOutputofaQuery定义查询的输出数据•第8步:FetchRowsofaQuery取查询出来的行下面具体说一下每一步中都发生了什么事情:.第1步:创建游标(CreateaCursor)由程序接口调用创建一个游标(cursor)。任何SQL语句都会创建它,特别在运行DML语句时,都是自动创建游标的,不需要开发人员干预。多数应用中,游标的创建是自动的。然而,在预编译程序(pro*c)中游标的创建,可能是隐含的,也可能显式的创建。在存储过程中也是这样的。第2步:分析语句(ParsetheStatement)在语法分析期间,SQL语句从用户进程传送到Oracle,SQL语句经语法分析后,SQL语句本身与分析的信息都被装入到共享SQL区。在该阶段中,可以解决许多类型的错误。语法分析分别执行下列操作:翻译SQL语句,验证它是合法的语句,即书写正确实现数据字典的查找,以验证是否符合表和列的定义在所要求的对象上获取语法分析锁,使得在语句的语法分析过程中不改变这些对象的定义验证为存取所涉及的模式对象所需的权限是否满足9第7页共40页第6页共4...