事务的四大属性ACID即事务的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability.。

事务的四大属性ACID即事务的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability.。

原子性(Atomicity)
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

一致性(Consistency)
事务必须使数据库从一个一致性状态变换到另外一个一致性状态。

隔离性(Isolation)
事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。

持久性(Durability)
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。

事务的隔离级别

l       多个线程开启各自事务操作数据库中数据时,数据库系统要负责隔离操作,以保证各个线程在获取数据时的准确性。

l      如果不考虑隔离性,可能会引发如下问题:

1、  脏读:

•        指一个事务读取了另外一个事务未提交的数据。

这是非常危险的,假设A向B转帐100元,对应sql语句如下所示

1.updateaccount set money=money+100 while name=‘b’;

2.updateaccount set money=money-100 while name=‘a’;

当第1条sql执行完,第2条还没执行(A未提交时),如果此时B查询自己的帐户,就会发现自己多了100元钱。如果A等B走后再回滚,B就会损失100元。

2、不可重复读:

•        在一个事务内读取表中的某一行数据,多次读取结果不同。

例如银行想查询A帐户余额,第一次查询A帐户为200元,此时A向帐户存了100元并提交了,银行接着又进行了一次查询,此时A帐户为300元了。银行两次查询不一致,可能就会很困惑,不知道哪次查询是准的。

•        和脏读的区别是,脏读是读取前一事务未提交的脏数据,不可重复读是重新读取了前一事务已提交的数据。

•        很多人认为这种情况就对了,无须困惑,当然是后面的为准。我们可以考虑这样一种情况,比如银行程序需要将查询结果分别输出到电脑
屏幕和写到文件中,结果在一个事务中针对输出的目的地,进行的两次查询不一致,导致文件和屏幕中的结果不一致,银行工作人员就不知道以哪个为准了。

3、虚读(幻读)

•        是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。

•        如丙存款100元未提交,这时银行做报表统计account表中所有用户的总额为500元,然后丙提交了,这时银行再统计发现帐户为600元了,造成虚读同样会使银行不知所措,到底以哪个为准。

因此,在特定的情况下,为事务设定相应的隔离级别是十分必要的。

事务的隔离级别的设定方法如下:

Serializable:可避免脏读、不可重复读、虚读情况的发生。(串行化)(序列化)

•        Repeatable read:可避免脏读、不可重复读情况的发生。(可重复读)

•        Read committed:可避免脏读情况发生(读已提交)。

•        Read uncommitted:最低级别,以上情况均无法保证。(读未提交)

set   transaction isolation level 设置事务隔离级别

[email protected]@tx_isolation      查询当前事务隔离级别

时间: 2024-10-17 12:33:36

事务的四大属性ACID即事务的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability.。的相关文章

数据库事务的ACID(原子性,一致性,隔离性,持久性)四大特性

我从维基百科翻译的.翻译水平有限: 在计算机科学中,ACID(原子性,一致性,隔离性,持久性)是数据库事务的一组属性,旨在即使在发生错误,断电等情况下也可以确保有效性.在数据库的上下文中,这是指一系列数据库操作,它们可以满足ACID属性(并且可以将这些属性视为对数据的单个逻辑操作)称为事务.例如,从一个银行帐户到另一个银行帐户的资金转移,即使涉及多个更改,例如从一个帐户借记而向另一个帐户贷记,也只是一次交易. 1983年, Andreas Reuter和TheoHärder在吉姆·格雷(Jim

事务四大特征:原子性,一致性,隔离性和持久性(ACID)

一.事务 定义:所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位. 准备工作:为了说明事务的ACID原理,我们使用银行账户及资金管理的案例进行分析. [sql] view plaincopyprint? // 创建数据库 create table account( idint primary key not null, namevarchar(40), moneydouble ); // 有两个人开户并存钱 insert into account valu

理解事务(ACID)——原子性、一致性、隔离性和持久性

事务是指对系统进行的一组操作,为了保证系统的完整性,事务需要具有ACID特性,具体如下:1. 原子性(Atomic)     一个事务包含多个操作,这些操作要么全部执行,要么全都不执行.实现事务的原子性,要支持回滚操作,在某个操作失败后,回滚到事务执行之前的状态.     回滚实际上是一个比较高层抽象的概念,大多数DB在实现事务时,是在事务操作的数据快照上进行的(比如,MVCC),并不修改实际的数据,如果有错并不会提交,所以很自然的支持回滚.     而在其他支持简单事务的系统中,不会在快照上更

理解事务——原子性、一致性、隔离性和持久性

事务是指对系统进行的一组操作,为了保证系统的完整性,事务需要具有ACID特性,具体如下:1. 原子性(Atomic)     一个事务包含多个操作,这些操作要么全部执行,要么全都不执行.实现事务的原子性,要支持回滚操作,在某个操作失败后,回滚到事务执行之前的状态.     回滚实际上是一个比较高层抽象的概念,大多数DB在实现事务时,是在事务操作的数据快照上进行的(比如,MVCC),并不修改实际的数据,如果有错并不会提交,所以很自然的支持回滚.     而在其他支持简单事务的系统中,不会在快照上更

事务的原子性,一致性,隔离性,持久性

事务的原子性事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据改操作要全部执行,要么全部不执行.这种特性称为原子性.  事务的原子性要求,如果把一个事务看作是一个程序,它要么完整的被执行,要么完全执行.就是说事务的操纵序列或者完全应用到数据库或者完全不影响数据库.这种特性称为原则性  假如用户在一个事务内完成了对数据库的更新,这时所有的更新对外部世界必须是可见的,或者完全没有更新.前者称事务已提交,后者称事务撤销.DBMS必须确保由成功提交的事物完成的所有操作在数据库内

事务的 原子性、一致性、隔离性、持久性

事务的原子性事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据改操作要全部执行,要么全部不执行.这种特性称为原子性.  事务的原子性要求,如果把一个事务看作是一个程序,它要么完整的被执行,要么完全执行.就是说事务的操纵序列或者完全应用到数据库或者完全不影响数据库.这种特性称为原子性  假如用户在一个事务内完成了对数据库的更新,这时所有的更新对外部世界必须是可见的,或者完全没有更新.前者称事务已提交,后者称事务撤销.DBMS必须确保由成功提交的事物完成的所有操作在数据库内

事务的四大属性

数据库事务的属性 数据库事务的属性包括四大类,即ACID.ACID分别是四个英文单词的首写字母,这四个英文单词是Atomicity(原子性). Consistency(一致性).Isolation(隔离性).Durability(持久性). 1.原子性 Atomicity 事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行.这种特性称为原子性. 2.一致性 Consistency 事务的一致性指的是在一个事务执行之前和执行之后数据库都

数据库事务的四大特性ACID

本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,所以事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响.为了实现原子性,需要通过日志:将所有对数据的更新操作都写入日志,如果一个事务中的一部分操作已经成功,但以后的操作,由于断电/系统崩溃/其它的软硬件错误而无法继续,则通过

事务的四大特性ACID

ACID是指数据库事务的四大特性,是由Jim Gray在19世纪70年代后期提出的概念,1983年Andreas Reuter and Theo Härder创造了ACID这个缩略语用来描述这四大特性. 原子性Atomicity是指事务是一个不可分割的整体,要么处于完成状态,要么处于未完成状态,不存在中间状态. 一致性Consistency是指任何事务操作完成后的结果不允许违背数据一致性的情况,其中包括不允许违背事先定义的约束Constraints等. 隔离性Isolation用于控制数据库的并