oracle update更新原理,oracle connection,select,update 工作原理

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中.­

­

­

viewspace-615428­

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值