Oracle事物

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

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

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

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

示例场景

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

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

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

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

相关推荐
程序员清风18 小时前
数据处理脚本工程化:日志、配置、命令行与测试
服务器·开发语言·数据库
正在走向自律19 小时前
数据集成产品的技术底座:从日志解析原理到 KFS 同步链路搭建(含建表与增删改查完整代码)
数据库·oracle·信创·数据集成·国产数据库·kingbasees·全量+增量同步
程序员塔塔喵19 小时前
【MySQL篇|第七篇】MySQL事务
数据库·mysql·mysql事务
独隅20 小时前
Claude API 实战教程:从入门到完整项目
android·java·数据库·claude·claude code
_孤傲_20 小时前
快速掌握 MySQL 语法
数据库·后端·mysql
数字新视界1 天前
一体化机柜在数据中心运维中的创新应用与优势分析
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
SelectDB1 天前
从 StarRocks 走向 Apache Doris:如何实现引擎平滑替换与架构升级?
大数据·数据库·数据分析
为思念酝酿的痛1 天前
MySQL的操作
数据库·mysql
猫咪很可爱1 天前
Oracle ORA-4031 错误分析与处理:SGA 内存不足导致 update/exp/expdp 失败
数据库·oracle
小豆庄1 天前
视频素材处理时的隐私盲区:云处理与本地处理的边界在哪
数据库·图像处理·视频·敏捷流程