文章目录
一、事务
1.事务引出
事务广泛用于订单系统、银行系统等多种场景。
例如:
A用户和B用户是银行的储户,现在A要给B转账500元,那么需要做以下几件事:
检查A的账户余额>500元;
A账户中扣除500元;
B账户中增加500元。
正常的流程走下来,A账户扣了500,B账户加了500;
那如果A账户扣了钱之后,系统出故障了,A会白白损失了500,而B也没有收到本该属于他的500。
以上的案例中,隐藏着一个前提条件:A扣钱和B加钱,要么同时成功,要么同时失败。事务的需求就在于此。
2.事务定义
事务是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。
例如,银行转帐工作:从一个帐号扣款并使另一个帐号增款,这两个操作要么都执行,要么都不执行。所以,应该把他们看成一个事务。
事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。
那么至少需要三个步骤:
(1)检查账户1的余额高于或者等于10