Oracle事物

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

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

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

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

示例场景

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

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

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

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

相关推荐
这个DBA有点耶34 分钟前
多模数据库深度解读:从“多库拼装”到“一库多能”的架构演进
数据库·mysql·dba
程序员夏洛1 小时前
MySQL 默认的事务隔离级别是什么?为什么选择这个级别?
数据库·mysql
艺术留白1 小时前
MokaTest使用篇-SQL接口
数据库·sql
( •̀∀•́ )9202 小时前
MySQL 自动备份与恢复方案
数据库·mysql·oracle
这个DBA有点耶2 小时前
大事务的“事前预防”:监控、拦截、Kill,四层防线一次讲透
数据库·mysql·代码规范
tachibana23 小时前
RAGAS 指标解读
数据库·人工智能·算法·机器学习·架构·大模型·llm
mlidongfeng3 小时前
[AI][昇腾950]TA 学习
数据库·学习
bestsun9993 小时前
rac集群环境下配置JDBC
数据库
java_logo4 小时前
Docker 部署 FalkorDB:轻松搭建属性图数据库与知识图谱平台
数据库·docker·知识图谱·falkordb·轩辕镜像·falkordb部署教程·falkordb部署文档
小白说大模型4 小时前
Spring AI 框架中集成 MCP 的完整指南:从服务端到客户端的全流程实践
大数据·数据库·人工智能·安全·spring·chatgpt·开源