现在的位置: 首页 > 综合 > 正文

oracle自学笔记一(SQL语句流程)

2013年06月26日 ⁄ 综合 ⁄ 共 648字 ⁄ 字号 评论关闭

本笔记为个人学习用,内容理解不一定正确,请勿盲目参照,如有错误,望好心提醒

 

select文执行流程(1.解析,2.执行,3提取数据)

① 用户进程提交到服务器

 

② 服务器进程先提交到共享池解析(

         ②-1这期间搜索高速缓存区,并检查是否存在相同的SELECT语句,有的话直接执行该SQL语句;没有的话,将

               分析语句语法与对象的存在与合法性。

         ②-2分析合法的话,再获得对象解析锁,防止解析期间其他用户改变对象结构

         ②-3检查访问权限,具备权限的由优化器生成执行计划装载到数据库告诉缓存区)。

 

③ 数据库高速缓存区执行计划

          ③-1确定选择行的数据块是否已经读到缓冲区,如果存在就直接提取数据。

          ③-2如果选择行数据块不在缓冲区,就到文件去读取数据到缓冲区。

 

④ 由服务器进程将查到结果集返回

 

DML文执行流程

执行select文的第一和第二步

③ 在执行DML计划的时候,先检查修改行在不在数据高数缓冲区,不在的话,从数据文件读取。

④ 在被修改行和修改表加锁,防止其他用户修改相应行数据或者改变表结构。

⑤ 将数据变化 写入重做日志缓冲区。

⑥ 修改缓冲区数据,将事务的新数据写到表块对应的缓冲区中,将旧数据写入undo快对应数据中。

⑦ 将commit语句或者SCN写入重做日志缓冲区。

⑧ commit提交后,LGWR进程把事务的所有变化写入重做日志文件

⑨ 由DBWn进程把被变更的内容从数据库高速缓冲区写入数据文件

⑩ 提交完成信息返回用户进程,释放事务所占用的表锁和行锁。

 

 

抱歉!评论已关闭.