数据库原子性和隔离性可以推导出一致性吗

 

前面我们已经分析了因为原子性并不能保证事务在一个时间点上完成,而是在一个时间片上完成,所以不能作为一致性的充分条件.详细的分析,可以参考:http://flyfoxs.iteye.com/admin/blogs/2087543

 

那么原子性,加上隔离性可以推导出一致性吗? 下面我们通过一个例子来分析下这个问题.

场景如下

A是老板,需要给员工B, C发工资. A账户里面有100元,需要给2员工,每人20元工资.

 

 

如果只有隔离性,和原子性那么操作结果如下.

时间戳事务1事务2
t1A减少20 
t2B添加20A减少20
t3提交(A=80, B=20)C添加20
t4 提交(A=80, C=20)

 

因为隔离性,T2时间点,虽然A已经减少了20元,但是并没有提交,所以事务2读到的A依然拥有100元(如果读取的是80,那就问题大了,属于读取脏数据).

在这里如果没有特别的处理,就会导致事务2提交后在T4时间点A有80元, B 和 C各有20元,总额120元,很明显数据不一致了,T1时间点,总额只有100元.

 

通过上面这个例子也就可以很容易的发现了,原子性和隔离性不能保证一致性.

 

很显然那上面这个场景是很普通,数据库是如何来保证最终一致性的呢,我会在下一篇里面继续讨论这个.

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值