ITPub博客

首页 > 数据库 > Oracle > oracle逻辑读详解

oracle逻辑读详解

原创 Oracle 作者:a960549548 时间:2024-04-11 15:10:53 0 删除 编辑

在 v$sysstat 资料视图中, session logical reads 记录了所有逻辑读,同时这个资料就是 AWR 报告中 load profile 中的 logical reads 数据。

 

逻辑读又被细分为一致读 (consisten read) 和当前读 (db block get) ,也可以在 v$sysstat 里找到。其中一致读针对 select 操作,当前读针对 DML 和 DDL 操作,简单来说一致读是纯粹的读,当前读是为了修改而产生的读操作 ( 修改数据得先访问数据 ) 。

 

区分两种读主要是看 buffer pin 锁的模式,下面是对应关系:

共享 buffer pin 锁—— 一致读,一致读模式

独占 buffer pin 锁—— 修改操作 ( 逻辑写 ) ,修改模式

类似共享模式 buffer pin 锁—— 当前读,当前读模式

 

一致读和当前读的区别就是他们两个加的锁不同而已。

 

当前读模式:

当前读模式就是服务进程在修改一个 buffer 的某行数据前,会先加一个当前读模式的锁,然后去找到这个行的位置。

修改模式:

修改 buffer 的某行数据时,在定位到这个行的位置后,会释放掉当前读模式的锁,转而加一个修改模式的 buffer pin 锁。

 

对于 DML 的当前读模式的锁和 select 的一致读模式的锁,不会互相堵塞;而对于 DML 的当前读模式的锁和 DDL 的当前读模式的锁会互相堵塞。这是为了还处于定位修改行位置的 DML 操作,不会堵塞 select ,却可以堵塞其他的 DML 操作。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70013625/viewspace-3012229/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: oracle表误删恢复
请登录后发表评论 登录
全部评论
Oracle ACE,MySQL 8.0 OCP,PMP,拥有OceanBase OBCP,TiDB PCTP,GoldenDB GDCP等多项认证,ITPUB认证专家,微信公众号:DBA之友。

注册时间:2022-02-08

  • 博文量
    132
  • 访问量
    171518