我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么理解oracle中的事务

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么理解oracle中的事务

本篇内容主要讲解“怎么理解oracle中的事务”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解oracle中的事务”吧!

一组SQL语句操作要成为事务,数据库管理系统必须保证这组操作的原子性(Atomicity)、一致性(consistency)、隔离性(Isolation)和持久性(Durability),这就是ACDI特性。

原子性:是指事物中包含的所有操作要么全做,要么全不做,也就是说事物的所有活动在数据库中要么全部反映,要么全部不反映,一保证数据时一致的。

一致性:是指数据库在事务操作前和操作处理,其中的数据必须都满足业务规定的约束。

隔离性:是指数据库允许多个并发事务同时对其中的数据进行读写好修改的能力,隔离性可以防止事务的并发执行时,由于他们的操作命令交叉执行而导致的数据不一致状态。

持久性:是指当事务结束后,它对数据库中的影响是永久的,即便系统遇到故障的情况下,数据也不会丢失。

数据库事务由以下的部分组成:

一个或多个DML 语句

一个 DDL(Data Definition Language – 数据定义语言) 语句

一个 DCL(Data Control Language – 数据控制语言) 语句

事务的执行过程:

以第一个 DML 语句的执行作为开始

以下面的其中之一作为结束:

COMMIT 或 ROLLBACK 语句

DDL 或 DCL 语句(自动提交)

用户会话正常结束

系统异常终了

备注:使用COMMIT 和 ROLLBACK语句,我们可以: 确保数据完整性;数据改变被提交之前预览;将逻辑上相关的操作分组。

事务控制语句

Set transaction:设置事务的属性

Set constrains:设置当前事务的约束模式,设置约束是修改数据的时候,立即起作用,还是当前事务结束后应用。

Savepoint :在事务中建立一个存储点,回滚时,可以指定回滚到什么地方,然后重新执行

Release savepoint:删除一个存储点

Rollback:回滚事务。级取消对数据库所做的任何修改

Commit:提交事务,把事务中对数据库的修改进行永久保存

数据异常

因为Oracle中支持多个事务并发执行,所以会出现下面的数据异常。

错读|脏读:当user1正在读数据库中的表A时,user2正在修改表A,user2修改完了,user1又读一遍表A,user1读出的是修改过的数据,而user2又撤消修改了,user1的读取表A,称为“错读”或者“脏读”

非重复读|不重复读:是指一个事务读取数据库中的数据后,另一个事务则更新了数据,当第一个事务再次读取其中的数据时,就会发现数据已经发生了改变,这就是非重复读取。非重复读取所导致的结果就是一个事务前后两次读取的数据不相同。

假读|幻读:如果一个事务基于某个条件读取数据后,另一个事务则更新了同一个表中的数据,这时第一个事务再次读取数据时,根据搜索的条件返回了不同的行,这就是假读。

事务中遇到的这些异常与事务的隔离性设置有关,事务的隔离性设置越多,异常就出现的越少,但并发效果就越低,事务的隔离性设置越少,异常出现的越多,并发效果越高。

选择隔离层

 针对3中读取的数据时产生的不一致现象,在ANSI SQL标准92中定义了4个事务的隔离级别.如下图所示:

隔离级别

错读|脏读

非重复读|不重复读

假读|幻读

Read uncommitted(非提交读)

Read committed(提交读)

Repeatable read(可重复读)


Serializable(串行读)

Oracle默认的隔离级别是read committed

Oracle支持上述地址隔离层中的两种read committed和Serializable除此之外oracle中还设置了read only和read write隔离层

Serializable:设置事务的隔离层为它时,

Read only :事务中不能有任何修改数据库中的数据的操作语句,如insert、update、delete、create语句,read only 是Serializable的子集,区别是read only只读,Serializable和执行DML语句。

Read write:是默认设置,改选项表示在事务中可以有访问语句。修改语句。但不经常使用

设置事务的属性

建立 set transaction的语句

如:

Set transaction read noly

或:

Set transaction read write

或:

Set transaction isolation level read commnitted

或:

Set transaction isolation level serializable

注意:这些语句是互斥的。不能同时设置两个或两个以上的选项

到此,相信大家对“怎么理解oracle中的事务”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么理解oracle中的事务

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么理解MySQL事务

这篇“怎么理解MySQL事务”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么理解MySQL事务”文章吧。事务指逻辑上的一组
2023-06-26

Oracle中的死锁怎么理解

本篇内容主要讲解“Oracle中的死锁怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle中的死锁怎么理解”吧!死锁Dead Lock 我们大家最早接触死锁这个概念可能是在操作系统
2023-06-06

MariaDB中事务是怎么处理的

在MariaDB中,事务是通过BEGIN、COMMIT和ROLLBACK语句来处理的。BEGIN语句用于开始一个新的事务。COMMIT语句用于提交事务,将对数据库的所有更改保存到数据库中。ROLLBACK语句用于回滚事务,将对数据库的所
MariaDB中事务是怎么处理的
2024-04-09

Spring中怎么管理事务

今天小编给大家分享一下Spring中怎么管理事务的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。什么是事务一个数据库事务是一个
2023-07-02

oracle中事务是什么

事务是 oracle 数据库中一组不可分割的逻辑操作,要么全部成功,要么全部失败。其特性包括原子性、一致性、隔离性和持久性。事务由数据操作语句、事务控制语句和数据结构组成,其生命周期包括开始、执行、提交或回滚。事务确保数据完整性、提高性能、
oracle中事务是什么
2024-05-07

java中怎么进行事务的处理

在Java中进行事务处理有多种方式,主要有以下几种方式:1. 编程式事务管理:在代码中显式地使用事务管理器来开启、提交或回滚事务。可以使用`TransactionTemplate`或`PlatformTransactionManager`来
2023-08-23

oracle事务怎么认定

oracle 中的事务认定依据包括:事务边界(begin transaction、commit、rollback)、原子性(全部成功或全部失败)、一致性(保持数据完整性)、隔离性(免受其他事务影响)、持久性(提交后永久保存更改)。Oracl
oracle事务怎么认定
2024-05-21

oracle事务怎么开启

在 oracle 中开启事务需要执行 "begin;" 语句,开启事务后所有修改暂时存储在内存中,直到提交或回滚。事务生命周期包括开启、提交和回滚阶段。控制事务的额外命令包括提交事务(commit)、回滚事务(rollback)和创建保存点
oracle事务怎么开启
2024-05-21

变量在Oracle复杂事务中的管理

在Oracle复杂事务中,变量管理是一个关键方面,它涉及到如何在不同的程序块和存储过程中声明、使用和传递变量,以及如何处理事务的原子性、一致性、隔离性和持久性(ACID属性)。以下是相关介绍:变量声明和初始化在Oracle中,变量必须先
变量在Oracle复杂事务中的管理
2024-08-27

编程热搜

目录