事务一致性与原子性的区别
2017-12-29 14:19
218 查看
其实一致性和原子性在事务里是两个不太相关,但又很相关的逻辑来的
原子性:这个侧重点是事务执行的完整,一套事务下来,如果有一个失败,那整体失败。也就是要么大家一起成功,要么全都回滚
一致性:这个讲的是事务是按照预期生效的,也就是你举例的那个转账的,一致性的核心一部分是靠原子性实现的,而另一部分是逻辑实现。
举个例子吧:
转账:张三给李四转账100元。那数据库假设需要 张三扣100,李四加100,记录一条流水。
如果流水没记录成功,那整体回滚,张三也没转账成功,李四也没多钱。这就是原子性的体现。
而张三必须扣100,李四必须加100,这个就是一致性了,如果因为某些逻辑原因,导致张三扣了100,流水记录100转账,而李四只加了60。然后这3条操作都成功了,那原子性就符合了,但是一致性就不符合了~~~
其实在实际应用中肯定不是这么简单的例子的。往往是类似,买东西扣库存这类的逻辑,主表里有库存,库存表里有库存,然后就因为设计缺陷,就算加了事务还是出现了主表库存对不上库存表库存的问题,这个就是一致性不满足的了。
原子性:这个侧重点是事务执行的完整,一套事务下来,如果有一个失败,那整体失败。也就是要么大家一起成功,要么全都回滚
一致性:这个讲的是事务是按照预期生效的,也就是你举例的那个转账的,一致性的核心一部分是靠原子性实现的,而另一部分是逻辑实现。
举个例子吧:
转账:张三给李四转账100元。那数据库假设需要 张三扣100,李四加100,记录一条流水。
如果流水没记录成功,那整体回滚,张三也没转账成功,李四也没多钱。这就是原子性的体现。
而张三必须扣100,李四必须加100,这个就是一致性了,如果因为某些逻辑原因,导致张三扣了100,流水记录100转账,而李四只加了60。然后这3条操作都成功了,那原子性就符合了,但是一致性就不符合了~~~
其实在实际应用中肯定不是这么简单的例子的。往往是类似,买东西扣库存这类的逻辑,主表里有库存,库存表里有库存,然后就因为设计缺陷,就算加了事务还是出现了主表库存对不上库存表库存的问题,这个就是一致性不满足的了。
相关文章推荐
- 事务一致性与原子性的区别
- 事务具有4个属性:原子性、一致性、隔离性、持久性
- 事务——原子性、一致性、隔离性和持久性的理解
- 事务具有4个属性:原子性、一致性、隔离性、持久性
- 理解事务——原子性、一致性、隔离性和持久性
- 理解事务——原子性、一致性、隔离性和持久性
- 事务的四大特性:原子性,一致性,隔离性,持久性(ACID)
- 数据库事务原子性、一致性是怎样实现的?
- 事务的 原子性、一致性、隔离性、持久性
- 理解事务——原子性、一致性、隔离性…
- 理解事务——原子性、一致性、隔离性和持久性
- 理解事务——原子性、一致性、隔离性和持久性
- 理解事务——原子性、一致性、隔离性和持久性
- 理解事务——原子性、一致性、隔离性和持久性
- 数据库事务原子性、一致性是怎样实现的?[转]
- 理解事务——原子性、一致性、隔离性和持久性
- 事务特性: 原子性、一致性、分离性、持久性
- 理解事务的一致性和原子性
- 事务具有4个属性:原子性、一致性、隔离性、持久性
- 分布式系统事务一致性解决方案