Oracle事务的ACID特性

Oracle事务的ACID特性

1、原子性(Atomicity)

事务的原子性是指事务中包含的所有操作要么都做,要么都不做,保证数据库是一致的。

例如:A帐户向B帐户划账1000,则先将A减少1000,再将B增加1000,这两个动作要么都提交,要么都回退,不可能发生一个有效、一个无效的情况。

2、一致性(Consistency)

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

例如:A、B帐户的总金额在转账前和转帐后必须一致,其中的不一致必须是短暂的,在事务提交前才会出现的。

再如:约定B帐户不能多于1000元,则A转出1000成功,B转入1000失败,最终由原子性得到——整个事务回滚

3、隔离性(Isolation)

隔离性是数据库允许多个并发事务同时对齐数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。

例如:在A、B之间转帐时,C同时向A转帐,若同时进行则A、B之间的一致性不能得到满足。所以在A、B事务执行过程中,其他事务不能访问(修改)当前相关的数值。

4、持久性(Durability)

持久性表示为:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

在提交之前如果系统故障,则所有信息全部丢失。提交之后数据存放在磁盘中,是永久性的。

事务的控制

事务的开始是隐形声明的,不用也没有语句可以进行操作,默认从对数据的修改开始就开始了当前事务。

对数据库的设置主要有一下语句:

SET TRANSACTION-----设置事务属性

SET CONSTRANS-------设置约束模式

SAVEPOINT-----------建立存储点

RELEASE SAVEPOINT---释放存储点

ROLLBACK------------回滚

COMMIT--------------提交

1、设置事务属性

设置事务属性主要可以用来完成以下工作:

* 指定事务的隔离层

* 规定回滚事务时所使用的存储空间

* 命名事务

注:SET TRANSACTION必须是事务的第一个语句。并在事务终止后自动失效。

SET TRANSACTION ISOLATION LEVEL READ COMMITED

A事务设置为READ COMMITED,该开始后B事务修改了数据,此时A无法得到新数据,B提交之后,A可以查询到更新数据。 A不可能错读,但可能发生假读和非重复读。

在需要并发数很大时应该使用READ COMMITED,对于多用户并发的性能和响应速度都比较好。

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

事务和事务之间完全隔离开,事务以串行的方式执行。不是说必须等一个结束,而是事务一旦开始,在结束之前查询到的数据永远是开始时刻的数据。由于留存的模式会比较多,所以会消耗一定的系统资源。

SET TRANSACTION READ ONLY

当前事务不能有任何修改数据的操作,READ ONLY是SERIALIZABLE的一个子集,基本上属于最高的安全级。

SET TRANSACTION READ WRITE

在READ的基础上增加WRITE权限,不常用

2、设置约束延期性

在操作过程中可能需要违反约束向表中插入重复的数据,其实需要设置约束延期性。

设置格式如下:

SET CONSTRAINT ALL | <constraint_name>

DEFERRED | IMMEDIATE

可以选择要延期的约束名,也可以使用ALL关键字延期所有的约束

DEFERRED表示延期,IMMEDIATE表示应用

注:理论上在COMMIT前需要设置回IMMEDIATE,但是系统可以隐式自动完成这一操作。

注意:要使用延迟的约束,必须在创建时就进行说明:

ALTER TABLE T1 ADD CONSTRAINT <constraint_name> DEFERRABLE INITIALLY IMMEDIATE

后面的DEFERRABLE 指名可以使用延迟,INITIALLY 设定了初始值

3、存储点

由于事务太大,一次回滚会对系统造成很大的压力。而且有时候在某一段特定的代码附近会特别发生错误而回滚。这时就需要在希望的地方设置一个存储点,可以显示得操作数据在发生错误时回滚到指定的存储点,而节省不必要的开销。

创建格式如下:

SAVEPOINT <savepoint_name>

使用格式如下:

ROLLBACK TO [SAVEPOINT] <savepoint_name>

4、结束事务

以下操作为将事务结束:

* 使用COMMIT提交事务,数据被永久保存

* 使用ROLLBACK回滚事务(不包括回滚到存储点)

* 执行DDL时,结束默认COMMIT

* 用户断开连接,此时事务自动COMMIT

* 进程意外中止,此时事务自动ROLLBACK

时间: 2024-10-13 19:28:22

Oracle事务的ACID特性的相关文章

转载:oracle事务的ACID特性

事务具有四个特征(ACID):原子性( Atomicity )指整个数据库事务是不可分割的工作单位.只有使据库中所有的操作执行成功,才算整个事务成功:事务中任何一个SQL语句执行失败,那么已经执行成功的SQL语句也必须撤销,数据库状态应该退回到执行事务前的状态.一致性( Consistency )事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态.因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态.如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成

深入学习MySQL事务:ACID特性的实现原理

事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段.本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID特性,并分析其实现原理. MySQL博大精深,文章疏漏之处在所难免,欢迎批评指正. 一.基础概念 事务(Transaction)是访问和更新数据库的程序执行单元:事务中可能包含一个或多个sql语句,这些语句要么都执行,要么都不执行.作为一个关系型数据库,MySQL支持事务,本文介绍基于MySQL5.6. 首先回顾一下MySQL事务的基础知识. 1

分布式事务(ACID特性、CAP定律)

普通事务和分布式事务的区别: 普通事务就是一般所说的数据库事务,事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成.当事务被提交给了DBMS(数据库管理系统),则DBMS(数据库管理系统)需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库中,如果事务中有的操作没有成功完成,则事务中的所有操作都需要被回滚,回到事务执行前的状态;同时,该事务对数据库或者其他事务的执行无影响,所有的事务都好像在独立的运行. 普通事务的ACID特性,即原子性(A).一致性(C).隔

事务的ACID特性

所有的oracle事务都遵循数据库基本的事务特性,就是所谓的ACID特性. ACID是以下四个事务特性的缩写: 1. 原子性 一个事务的所有工作要么都(成功)执行,要么都不执行.不会发生只执行一部分的情况. 比如说,一个事务开始更新100行记录,但是在更新了20行之后(因为某种原因)失败了,那么此时数据库会回滚(撤销)对那20条记录的修改. 2. 一致性 事务将数据库从一个一致性状态带入另一个一致性状态. 比如说,在一个银行事务(在描述关系数据库事务的特性时,基本上都是用银行事务来作为描述对象的

数据库事务的ACID特性和隔离级别

1. 事务的四个特性 数据库事务(Transaction)是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行.一方面,当多个应用程序并发访问数据库时,事务可以在应用程序间提供一个隔离方法,防止互相干扰.另一方面,事务为数据库操作序列提供了一个从失败恢复正常的方法. 事务具有四个特性:原子性(Atomicity).一致性(Consistency).隔离型(Isolation).持久性(Durability),简称ACID. 1.1 原子性(Atomicity) 事务的原子性

Oracle事务

Oracle事务的ACID特性 原子性Atomicity:事务中的所有动作要么都发生,要么都不发生. 一致性Consistency:事务将数据库从一种状态转变为下一种一致状态. 隔离性Isolation:一个事务的影响在该事务提交前对其他事务时不可见的. 持久性Durability:事务一旦提交,其影响就是永久性的. 事务控制语句 事务隐式开始 事务必须显示结束(Commit.Rollback) Commit 会结束事务,并使得已做的修改持久的保存在数据库中 Rollback 会结束事务,并撤销

Oracle 事务总结(转)

1.事务概念:    概念:在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么完全成功执行,完成整个工作单元操作,要么一点也不执行.     主要特性:确保数据库的完整性.   2.事务的ACID特性     对一组SQL语句操作构成事务,数据库操作系统必须确保这些操作的原子性,一致性,隔离性,持久性.   1.  原子性(Atomicity)       事务的原子性是指事务中包含的所有操作要么全做,要么不做

oracle 事务

一.事务概念 概念:在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么完全成功执行,完成整个工作单元操作,要么一点也不执行. 二.事物的特性 a)         主要特性:确保数据库的完整性. b)         事务的ACID特性 i.              原子性(Atomicity) 事务的原子性是指事务中包含的所有操作要么全做,要么不做,也就是说所有的活动在数据库中要么全部反映,要么全部不反映,

oracle 事务 锁机制

本课内容属于Oracle高级课程范畴,内容略微偏向理论性,但是与数据库程序开发和管理.优化密切相关:另外本课的部分内容在前面章节已经涉及,请注意理论联系实际. 事务  事务(Transaction)从 通讯的角度看:是用户定义的数据库操作序列,这些操作要么全做.要么全不做,是不可分割的一个工作单元.事务控制语句称为TCL,一般包括Commit和Rollback. 事务不是程序,事务和程序分属两个概念.在RDBMS中,一个事务可以有一条SQL语句.一组SQL语句或者整个程序:一个应用程序又通常包含