目录
事务的一致性
理解
三大属性
一致性不是技术层面上一个概念,而是使用层面上的
- 一致性 -- 数据库只包含事务成功提交的结果 / 系统运行发生中断,某个事务完成到一半被迫中断,从而自动回滚,回到初始状态
而回滚的操作是因为原子性才引入的
- 所以保证原子性的同时,也间接维护了数据的完整性和一致性
事务中另外三个属性,都是围绕着[保证数据库的一致性]展开的
- 假设没有持久性,你钱也花了票也买了,结果系统一重启订单消失了
- 这样无法保证数据的一致性
- 所以,在技术层面上,我们的目的就是通过AID保证C
只要有了三大属性,就可以保证用户在使用时,数据库所有的行为都是可预测的 -- 一致性
用户配合
mysql对一致性提供了技术支持,但一致性还是需要用户业务逻辑做支撑
- 一致性由用户决定
因为本身数据库中的事务就是为了给用户服务而被设计出来的
- 数据库只是个工具,完全由工具维护一致性,有点太难为它了
- 只有技术并不能完全保证一致性
假设有个程序员负责转账,但它只写扣钱,不写加钱的sql,然后交给mysql
- 这样就导致数据不一致,钱直接消失了
- 但这也不是mysql的错,它只是个跑腿的
所以,一致性需要用户配合,得保证写出来的事务是对的,是完整的