Chinaunix首页 | 论坛 | 博客
  • 博客访问: 79350
  • 博文数量: 38
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 360
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-11 14:02
文章分类
文章存档

2017年(38)

我的朋友

分类: Oracle

2017-12-07 13:48:12

consistent mode  是在基于 query mode 下的,oracle有一个一致读的概念
也就是说,当查询开始的时候oracle将确立一个时间点,凡是在这个时间点以前提交的数据oracle将能看见,之后提交的数据将不能看见。但查询的时候可能遇上这样的情况,该块中数据已经被修改了,没有提交,或者提交的时间点比查询开始的时间晚,则oracle为了保证读的一致性,需要去回滚段获取该块中变化前的数据。这叫 consistent reads 。

current  mode 的意思就是,当看到当前的block中的内容的时候,是什么就是什么,跟时间点无关,不用去回滚段获取之前的数据。什么时候会是这样的模式? 除了9i以前版本的fts对数据字典的获取是current  mode外(这是因为关于数据字典的获取必须是当前看见的状态),主要就是发生在DML 的时候,当发生DML的时候,session所看见的必须是当前的block的状态,不能去回滚段获取数据。假如当前block中数据是被其他的session更改过还没有提交,那么则看到当前状态数据被其他session 锁定,出现等待。(而查询去回滚段获取数据则读和更新之间不会出现锁的情况)
阅读(1134) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~