当前位置: 首页 > article >正文

Oracle事物

在 Oracle 中,当你开启一个事务(例如,通过执行 BEGIN 语句或直接执行 DML 语句如 INSERTUPDATEDELETE )时,以下行为会发生:

1. **行级锁**:当你修改数据时(例如,执行 INSERTUPDATEDELETE ),Oracle 会在受影响的行上加上行级锁。其他尝试修改相同行的事务将被阻塞,直到第一个事务提交或回滚。

2. **读一致性**:其他事务仍然可以读取正在被修改的数据,但他们会看到数据在事务开始之前的状态。这是由于 Oracle 的多版本并发控制(MVCC)机制,提供了读一致性。因此,在一个事务进行时,其他查询可以读取数据而不会被阻塞。

3. **阻塞行为**:如果另一个事务尝试修改与第一个事务锁定的相同行,它将被阻塞,直到第一个事务完成。如果它尝试读取被锁定的行,它将看到事务开始之前的旧版本的数据,而不会被阻塞。

示例场景

1. **事务 A** 开始并更新一个表中的行。

2. **事务 B** 尝试更新相同的行。事务 B 将被阻塞,直到事务 A 提交或回滚。

3. **事务 C** 尝试在事务 A 仍然开放时读取相同的行。事务 C 将看到该行的旧版本(在事务 A 更新之前),并且不会被阻塞。

总之,在 Oracle 中,当一个事务处于活动状态时: - 其他事务可以读取数据,而不会被阻塞。 - 其他事务尝试修改相同数据时将被阻塞,直到第一个事务完成


http://www.kler.cn/a/310432.html

相关文章:

  • vue2.7.14 + vant + vue cli脚手架转vite启动运行问题记录
  • 【设计模式】行为型模式(二):策略模式、命令模式
  • 使用Docker快速部署FastAPI Web应用
  • 【插件】多断言 插件pytest-assume
  • Golang | Leetcode Golang题解之第559题N叉树的最大深度
  • Nuxt 版本 2 和 版本 3 的区别
  • 线性代数之QR分解和SVD分解
  • ShouldSniffAttr在自动化测试中具体是如何应用?
  • mysql事务的隔离级别学习
  • Selenium实现滑动滑块验证码验证!
  • 交换机最常用的网络变压器分为DIP和SM
  • 嵌入式单片机中数码管基本实现方法
  • ARM基础
  • C++ (进阶) ─── 多态
  • 力扣(LeetCode)每日一题 2848. 与车相交的点
  • 【智路】智路OS airos-edge
  • 【数学分析笔记】第3章第2节 连续函数(4)
  • STM32MP157/linux驱动学习记录(二)
  • 网络安全:建筑公司会计软件遭受暴力攻击
  • Flink官方文档
  • prometheus概念
  • 第R3周:LSTM-火灾温度预测:3. nn.LSTM() 函数详解
  • Matlab 的.m 文件批量转成py文件
  • HTML讲解(一)body部分
  • IDEA去除掉虚线,波浪线,和下划线实线的方法
  • 【微服务-注册中心】