事务的四大特性(ACID)

因为一直记得不全面,所以加了实例加深印象。

一、定义

1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么全部不执行。

2、一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。

3、隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。

4、持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。   


二、实例解析

事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。
这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL Server能将逻辑相关的一组
操作绑定在一起,以便服务器保持数据的完整性。
事务应用的一个广泛例子就是银行中的存取款业务。

假设有账户A、B和C
事务t1:要在A,B账户之间进行转账,操作1) A->B:$300,操作2) B->A:$500和操作3)B->A:$900。上述最终结果是B->A:$1100。
事务t2:要在C,B账户之间进行转账,操作1) C->B:$100,操作2) B->C:$400。上述最终结果是B->C:$300。

1、原子性:t1的操作1)和2)要么全执行,要么全不执行。若只执行三个操作中的一个或是两个,其结果与期望结果有明显的不同;
2、一致性:原子性是对事务本身的要求,一致性则要求事务执行之前和执行之后数据库都必须处于一致性状态。也就是t1,t2均对账户B有操作,但是对操作的结果不会有影响;
3、隔离性:t1和t2的执行互不影响。隔离性也是建立在原子性的基础之上,
由原子性可知事务一旦执行就全部执行,所以事务t1的操作序列中不会插入t2的操作序列,也就不会出现
[t1:1),02)] -> [t2:1),2)] -> [t1:3)],也就实现了事物之间的透明;
4、持久性:信息存储到物理介质后,某种程度可以说实现了信息的永久存储。持久性就是事务一旦提交,数据修改的结果马上由内存写入硬盘。值得注意的是:若事务未提交,则
遇到系统故障时,所有信息全部丢失。

三、作用区域
1、原子性:单个事务的几个或全部操作序列;
2、一致性:多个事务之间,,强调事务执行的顺序之间不会有影响;
3、隔离性:多个事务之间,强调事务执行的过程(操作序列)之间不会有影响;
4、持久性:软件与硬件之间。


四、注意
一致性是并行的事务之间,不是事务的操作序列!现在想想,当时面试时那略带不耐烦的回答,还有面试官的诡谲笑容,真真是无地自容

引用 http://www.runoob.com/mongodb/nosql.html

关系型数据库遵循ACID规则
 1、A (Atomicity) 原子性
原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。
比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。
 2、C (Consistency) 一致性
一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。
 例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。
 3、I (Isolation) 独立性
所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。
比如现有有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。
 4、D (Durability) 持久性
持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值