考试网 >> IT认证 >> Oracle >> Oracle指导 >> 通过分析SQL语句的执行计划优化SQL

通过分析SQL语句的执行计划优化SQL

发布时间:2006-06-28 10:05     点击:
分页:上一页  1 2 3 4 [5] 6 7 8 9 10  下一页  后10页

   · 第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语句经语法分析后,SQL语句本身与分析的信息都被装入到共享SQL区。在该阶段中,可以解决许多类型的错误。

  语法分析分别执行下列操作:

  *翻译SQL语句,验证它是合法的语句,即书写正确

  *实现数据字典的查找,以验证是否符合表和列的定义

  *在所要求的对象上获取语法分析锁,使得在语句的语法分析过程中不改变这些对象的定义

  *验证为存取所涉及的模式对象所需的权限是否满足

  *决定此语句最佳的执行计划

  *将它装入共享SQL区

  *对分布的语句来说,把语句的全部或部分路由到包含所涉及数据的远程节点

  以上任何一步出现错误,都将导致语句报错,中止执行。

  只有在共享池中不存在等价SQL语句的情况下,才对SQL语句作语法分析。在这种情况下,数据库内核重新为该语句分配新的共享SQL区,并对语句进行语法分析。进行语法分析需要耗费较多的资源,所以要尽量避免进行语法分析,这是优化的技巧之一。

  语法分析阶段包含了不管此语句将执行多少次,而只需分析一次的处理要求。Oracle只对每个SQL语句翻译一次,在以后再次执行该语句时,只要该语句还在共享SQL区中,就可以避免对该语句重新进行语法分析,也就是此时可以直接使用其对应的执行计划对数据进行存取。这主要是通过绑定变量(bind variable)实现的,也就是我们常说的共享SQL,后面会给出共享SQL的概念。

  查询语句的处理
分页:上一页  1 2 3 4 [5] 6 7 8 9 10  下一页  后10页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有