oracle逻辑读详解

在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操作。

相关推荐

  1. oracle逻辑详解

    2024-04-12 10:26:06       41 阅读
  2. oracle逻辑层级详解(表空间、段、区、数据块)

    2024-04-12 10:26:06       24 阅读
  3. Oracle逻辑备份

    2024-04-12 10:26:06       25 阅读
  4. Python逻辑运算符详解

    2024-04-12 10:26:06       54 阅读
  5. 逻辑回归详解

    2024-04-12 10:26:06       119 阅读
  6. Oracle转MySQL该如何改变逻辑

    2024-04-12 10:26:06       53 阅读
  7. Oracle 时间类型详解

    2024-04-12 10:26:06       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-12 10:26:06       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-12 10:26:06       74 阅读
  3. 在Django里面运行非项目文件

    2024-04-12 10:26:06       62 阅读
  4. Python语言-面向对象

    2024-04-12 10:26:06       72 阅读

热门阅读

  1. 论文复现:torch.max(p,1)

    2024-04-12 10:26:06       31 阅读
  2. leetcode674-Longest Continuous Increasing Subsequence

    2024-04-12 10:26:06       33 阅读
  3. 加权随机负载均衡算法golang实现

    2024-04-12 10:26:06       37 阅读
  4. 单例模式a

    2024-04-12 10:26:06       36 阅读
  5. 面试经典150题——删除有序数组中的重复项

    2024-04-12 10:26:06       36 阅读
  6. HistoricActivityInstance和HistoricProcessInstance区别

    2024-04-12 10:26:06       30 阅读