性能优化资料培训文档.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
性能优化资料培训文档

Oracle项目部专题知识总结提炼 性能优化培训文档 Author: Wenfeng.Zhang Creation Date: savedate \@ MMMM d, yyyyMay 4, 2011 Last Updated: savedate \@ MMMM d, yyyyMay 4, 2011savedate \@ MMMM d, yyyy Document Ref: Version: DRAFT 1A Approvals: Document Control Change Record SECTIONPAGES 4 日期 作者 版本 变更说明 ZHA savedate \@ MMMM d, yyyyMay 4, 2011 Zhangwenfeng 1.0 No Previous Document Reviewers 姓名 职位 Distribution 拷贝编号 姓名 位置/岗位 1 2 3 4 性能优化简介 性能优化 简介 本文档主要介绍与SQL调整有关的内容,内容涉及多个方面:SQL语句执行的过程、ORACLE优化器,表之间的关联,如何得到SQL执行计划,如何分析执行计划等内容,从而由浅到深的方式了解SQL优化的过程,使大家逐步步入SQL调整之门,然后你将发现…… 第1章 SQL语句处理的过程 在调整之前我们需要了解一些背景知识,只有知道这些背景知识,我们才能更好的去调整sql语句。 本节介绍了SQL语句处理的基本过程,主要包括: ? 查询语句处理 ? DML语句处理(insert, update, delete) ? DDL 语句处理(create .. , drop .. , alter .. , ) ? 事务控制(commit, rollback) SQL 语句的执行过程(SQL Statement Execution) 图3-1 概要的列出了处理和运行一个sql语句的需要各个重要阶段。在某些情况下,Oracle运行sql的过程可能与下面列出的各个阶段的顺序有所不同。如DEFINE阶段可能在FETCH阶段之前,这主要依赖你如何书写代码。 对许多oracle的工具来说,其中某些阶段会自动执行。绝大多数用户不需要关心各个阶段的细节问题,然而,知道执行的各个阶段还是有必要的,这会帮助你写出更高效的SQL语句来,而且还可以让你猜测出性能差的SQL语句主要是由于哪一个阶段造成的,然后我们针对这个具体的阶段,找出解决的办法。 7 图 3-1 SQL语句处理的各个阶段 DML语句的处理 本节给出一个例子来说明在DML语句处理的各个阶段到底发生了什么事情。 假设你使用Pro*C程序来为指定部门的所有职员增加工资。程序已经连到正确的用户,你可以在你的程序中嵌入如下的SQL语句: EXEC SQL UPDATE employees SET salary = 1.10 * salary WHERE department_id = :var_department_id; 8 var_department_id是程序变量,里面包含部门号,我们要修改该部门的职员的工资。当这个SQL语句执行时,使用该变量的值。 每种类型的语句都需要如下阶段: ? 第1步: Create a Cursor 创建游标 ? 第2步: Parse the Statement 分析语句 ? 第5步: Bind Any Variables 绑定变量 ? 第7步: Run the Statement 运行语句 ? 第9步: Close the Cursor 关闭游标 如果使用了并行功能,还会包含下面这个阶段: ? 第6步: Parallelize the Statement 并行执行语句 如果是查询语句,则需要以下几个额外的步骤,如图 3所示: ? 第3步: Describe Results of a Query 描述查询的结果集 ? 第4步: Define Output of a Query 定义查询的输出数据 ? 第8步: Fetch Rows of a Query 取查询出来的行 下面具体说一下每一步中都发生了什么事情:. 第1步: 创建游标(Create a Cursor) 由程序接口调用创建一个游标(cursor)。任何SQL语句都会创建它,特别在运行DML语句时,都是自动创建游标的,不需要开发人员干预。多数应用中,游标的创建是自动的。然而,在预编译程序(pro*c)中游标的创建,可能是隐含的,也可能显式的创建。在存储过程中也是这样的。 第2步:分析语句(Parse the Statement) 在语法分析期间,SQL语句从用户进程传送到Oracle,SQL语句经语法分析后,

文档评论(0)

honey888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档