oracle dbblock gets

一个 db block gets是一个current mode get.这是现在或者最近的数据块中最新的copy

buffer cache中任何时候只能有一个blockcopy Db block gets是发生通常是:DML改变database中的数据的时候。在这种情况下row-level的锁会隐式的加载在正在被更新的rows上。

select语句执行一个db block gets的时候,最少有一个well-knowncase,,而且不会产生lock

当执行一次全表扫描或者全索引扫描的时候,oracle会读取segmentheader current mode(多次读取,取决于oracle版本)。



Current mode

Oracle获得block用两种方式:current或者consistent




Consistent get是当oracle得到一个block(一致性的block,有一个给予的时间点或者SCN

一致性得到是oracle一致性读机制的核心。为了完成查询结果,block会被拿出来,它们被取出来在一致性模式上。如果在buffer cache中的block和正确的point不一致的话,oracle会使用rollback sgement中的信息重建block。如果失败的话,这就是会产生错误。

(为什么buffer  cache中的block和正确的point不一致?)







Current mode 是相对于query mode来说的,current mode产生db block gets,一般是在DML的时候产生

Query mode 产生 consistent gets,一般在查询的时候产生,,总和一般称为逻辑读,logicalread




Current mode是当前读到的是什么数据就是什么数据,

一致性模式是:从开始到结束读到的数据都是同一个时间点内



Select is query mode

And DML like insertupdate delete is consistent mode








Oracle 读一致性

Consistent  read:如何实现:



Oracle逻辑读:是从内存,确切的说是从:SGA中的buffer cache中取出东西来

Logical read,又分为:db block gets ,consistentgets


Db block gets DML执行的时候,在内存中读取的东西,还涉及到oracleundo segment


consistent gets是,select执行的时候,因为不会产生数据变化,所以说是直接从oraclebuffer cache 中取出东西来就OK




What the fuck is going on?

What the hell is going on?


Where is the truth?



本文出自 “原歌轩” 博客,请务必保留此出处http://yuangeqingtian.blog.51cto.com/6994701/1364248

oracle dbblock gets,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。