oracle各类型SQL的操作流程

标签: oracle 类型 sql | 发表时间:2014-05-10 22:30 | 作者:sanmao6139
出处:http://www.iteye.com

SELECT
•Select * from test  where  object_id=200在体系中是如何运转的。
•1. 在PGA中把此条SQL语句hash成一个值;
•2. 接下来根据此hash值到SGA的共享池中去匹配,如果没有,首先查询自己的语句语法是否正确,语义是否正确,是否有权限。如果都通过则通过CBO解析生成执行计划(如走索引还是全表)。
•3. 如果是走索引,到数据缓存区找到object_id=200的索引,根据索引rowid找到记录,如果数据缓存区找不到,则到数据文件中找到,并展示给用户。

UPDATE
•Update test set object_id = 100 where object_id = 200; 在体系中是如何运转的。
•更新object_id=200的记录首先要查到object_id=200的记录,检查object_id=200是否在数据缓存中,不在则从磁盘中读取到数据缓存中。
•在回滚表空间的相应回滚段事务表上分配事务槽,从而在回滚表空间分配到空间。该动作需要记录redo日志。
•在数据缓存区中创建object_id=200的前镜像,前镜像数据也会写进磁盘的数据文件(undo表空间的数据文件),从缓存区写进磁盘有CKPT决定,当然这些动作都要记录redo日志。
•前面的步骤做完了,才允许object_id=200改为object_id=100,记录redo日志。
•此时用户如果执行了提交,日志缓存区立即记录这个提交信息,然后将回滚段事务标记为非激活INACTIVE状态,表示允许重写。
如果执行了回滚,Oracle需要从回滚段中将前镜像object_id=200的数据读出来,修改数据缓存区,完成回滚,记录redo日志。

delete运作流程?

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [oracle 类型 sql] 推荐:

oracle各类型SQL的操作流程

- - 数据库 - ITeye博客
•Select * from test  where  object_id=200在体系中是如何运转的. 在PGA中把此条SQL语句hash成一个值;. 接下来根据此hash值到SGA的共享池中去匹配,如果没有,首先查询自己的语句语法是否正确,语义是否正确,是否有权限. 如果都通过则通过CBO解析生成执行计划(如走索引还是全表).

oracle sql 优化大全

- - Oracle - 数据库 - ITeye博客
最近遇到了oracle sql优化的问题,找了一下,发现这文章实在不错,跟大家分享一下,如果以后有什么新的改进也会继续补充的. 1     前言… 2 . 2     总纲… 2 . 3     降龙十八掌… 3 . 第一掌 避免对列的操作… 3 . 第二掌 避免不必要的类型转换… 4 . 第三掌 增加查询的范围限制… 4 .

Oracle SQL性能优化

- - 数据库 - ITeye博客
(1)      选择最有效率的表名顺序(只在基于规则的优化器中有效):. ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表. 如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.

ORACLE SQL Performance Analyzer的使用

- - CSDN博客数据库推荐文章
通过 SPA,您可以根据各种更改类型(如初始化参数更改、优化器统计刷新和数据库升级)播放特定的. SQL 或整个 SQL 负载,然后生成比较报告,帮助您评估它们的影响.. 在 Oracle Database 11g 之前的版本中,我必须捕获所有 SQL 语句,通过跟踪运行这些语句,. 然后得到执行计划 — 这是一项极其耗时又极易出错的任务.

查询Oracle 耗资源sql

- - 非技术 - ITeye博客
已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

Oracle PL/SQL 编程基础 实例 2

- - CSDN博客数据库推荐文章
if  循环  控制语句 . --编写一个过程,可以 输入一个雇员名,如果该雇员的工资低于2000就给他增加10%.           --判断. --======####案例s33 编写一个过程,可以 输入一个雇员名,如果该雇员的补助不是0就在原基础上增加100,如果是0就加200.           --判断.

Oracle PL/SQL 编程基础 实例

- - CSDN博客数据库推荐文章
1, exec 过程名 (参数,.  call 过程名 (参数  ).   dbms_output.put_line('姓名:'||v_ename);.                           --执行部分.  --------------函数 -------.    -------包------------由包规范和包体组成的.

用SQL语言管理Oracle数据库

- - CSDN博客推荐文章
1,查看数据库的基本属性:. SELECT dbid 数据库编号,name 数据库名称,db_unique_name 全局名称,created 创建时间,log_mode 归档方式,open_mode 访问方式,platform_name 版本类型 FROM v$database;. 2,查看所有数据库对象的类别和大小:.

oracle sql 执行计划分析

- - CSDN博客数据库推荐文章
oracle sql 执行计划分析.     今天是2013-10-08,时间过的非常快,十月一就这样过去了,回想一下我感觉还是蛮不错的,1号与Amy相约青岛,两个人痛快的玩了两天,我们拍了很多照片,也感受到了彼此的快乐. 四号到家开始在家干农活,在昨天的晚上我和我爸妈一直忙到晚上11点才把所有的棒子都剥完了.