ITPub博客

首页 > Linux操作系统 > Linux操作系统 > sql语句处理流程

sql语句处理流程

原创 Linux操作系统 作者:litongbing 时间:2010-06-12 21:14:04 0 删除 编辑

    今天去了趟图书馆,查看了一些数据库编程方面的书籍,数据库编程对我而言也不是很陌生了,毕竟跟它打了几年的交道了。虽然是很基础的东西,但看了下还是有很多感触的,对一些原理也了解得更清晰。看来经常‘温故’是要常做的。好了废话就不多说了。回顾下sql语句的基础
     SQL语句所要经过的几部分:
         一、连接到数据库
         二、创建游标
         三、提交sql语句到oracle数据库进行处理
         四、响应查询提交,返回从oracle数据库中检索出的数据
    sql语句的处理流程
      连接到数据库-->创建游标-->有效性检验-->优化-->为结果集准备-->绑定变量-->执行语句-->返回信息
    其中优化到绑定变量是潜在可选事件,而其余事件是强制性事件。
   在每个阶段处理的事件,如下
   一、连接到数据库:在客户端应用程序和oracle数据库服务器之间建立通信。      oracle数据库的连接称为会话。是客户端通过网络协议TCP/IP连接到服务器的。
   连接请求实际是由oracle侦听器接收,连接一旦建立,侦听器会将请求传递到与连接想关的后台进程。
  二、创建游标,为sql语句保存上下文。游标是对程序全局区域内特定的连接,是应用程序提交得SQL语句和ORACLE数据库对这些语句执行结果的动作之间的中介。
  游标保存着对SQL语句当前状态的信息,对返回多行数据的语句,游标跟踪结果集返回行的位置。
  三、提交sql语句到oracle数据库进行处理,包括检验语句的有效性和为语句创建优化的执行计划。在这一步都会执行下面过程
  1 检验语句的有效性
     校验sql语句语法是否合法,表名、列名是否引用了用户可以正确访问的有效实体或访问没有特权的数据库对象,oracle都会返回一个错误。
     DDL和写操作,语句载入到共享的SQL区域就可以执行,而对于查询而言,语句要经过额外的优化。
    sql语句检验完后,oracle数据库使用一个散列算法检查语句版本在共享SQL区域中是否存在,如不存在则继续进行下一步优化,这种分析称为硬解析。
    如果存在,则简单的为语句检索执行计划,这称为软解析。
  2 优化,oracle查询优化器分析各种路径,根据执行效率对它们进行评估。优化过程的最后结果是一个详细描述oracle实例如何通过已经提交的SQL语句对请求的数据进行检索的执行计划。
  3 准备结果 oracle数据库必须为准备结果集的返回做一些额外的准备条件
  4 绑定变量。绑定变量在运行前是未知的,为此带绑定变量的SQL语句编译是通过的,可是运行时会报错误。在SQL语句中绑定变量充当占位符。
    在SQL语法中通过冒号(:)后加变量名指出。好处可以增加共享SQL的使用,有效的提高性能
  5 执行。 到这步实例就可以使用准备好的执行计划执行SQL语句了。
  6 返回  oracle返回每个处理SQL语句的信息

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/20948385/viewspace-665122/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: oracle基本术语
请登录后发表评论 登录
全部评论

注册时间:2009-05-13

  • 博文量
    59
  • 访问量
    215321