ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle connection,select,update 工作原理

oracle connection,select,update 工作原理

原创 Linux操作系统 作者:tanxiaoke88 时间:2009-09-23 20:28:48 0 删除 编辑

1.理解connection ..session..transaction.知道何时开始与结束 ­

2.connection的工作原理 ­

     connection是如何验证的 ­

        SQL>  conn  sys/a123@demo  as  sysdba当输入此条语句结束后. ­

第一步:服务器进程会通过sqlnet.ora验证 ­

     我的sqlnet.ora是这样的: ­

                          SQLNET.AUTHENTICATION_SERVICES= (NTS) ­

                          NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) ­

     那么,客户端就会首先在tnsnames.ora文件中找demo的记录.当发现是本地解析时(TNSNAMES)就会进行 ­

第二步: 读取tnsnames.ora文件: ­

   DEMO = ­

      (DESCRIPTION = ­

      (ADDRESS_LIST = ­

      (ADDRESS = (PROTOCOL = TCP)(HOST = xiaoke)(PORT = 1521)) ­

    ) ­

    (CONNECT_DATA = ­

      (SERVICE_NAME = demo) ­

    ) ­

  ) ­

连接的是xiaoke这台机器的1521端口的database_sid=demo(用tcp协议). ­

3.select的工作原理 ­

以 "select  column  from  table"为例 ­

    分为三个阶段:parse(解析) ­

                               execute执行) ­

                               fetch(取回) ­

看起来,是很简单的事情,其实Oracle做了很复杂的事情. ­

一)parse(解析) ­

当客服端发出select命令后,服务器进程会搜索共享池中的库高速缓存,看有没有相同的执行语句,如果有的话,就会直接执行.如果没有的话,服务器进程就会进行以下的步骤: ­

1)语法分析 ­

2)分析表,列(验证存在与否) ­

3)获得对象的解析锁(不能改变表的结构,但可以改变表的内容) ­

4)验证对对象操纵的权限 ­

5)把执行计划写入到库高速缓存 ­

二)execute(执行) ­

此阶段比较简单,服务器进程会在数据库缓冲区中寻找table,如果没找到table就会在数据文件中读出table到数据库缓冲区,此阶段结束,如果找到了,此阶段结束. ­

三) ­

fetch(提取) ­

服务器进程提取数据给用户 ­

4.update的工作原理­

update的工作分为两个阶段:­

                   parse(解析)                    execute(执行) ­

1)parse(解析) ­

parser阶段和select语句的parser阶段原理差不多.其中当用到表,列及用户的权限的时候,服务器进程会在数据字典高速缓存区中去找,看是否存在,当不存在时,就会到硬盘上去取数据到数据字典高速缓存中.­

2)execute­

当解析阶段把执行计划写入到库高速缓存中后,就会开始了执行阶段.首先服务器进程会检查数据库高速缓存区中寻找表,列名,当找到后,对列加锁.然后执行更新,旧的数据就会写到undo buffer中去,同时undo_buffer与数据库缓冲区的变化写到redo log buffer中.­

­

 

 

­

图片­

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

下一篇: 限制索引 (转)
请登录后发表评论 登录
全部评论

注册时间:2009-05-12

  • 博文量
    36
  • 访问量
    38334