首页 > 编程知识 正文

spring是如何管理事务,spring怎么管理事务的

时间:2023-05-05 23:41:08 阅读:186802 作者:1525

前言在实际的业务场景中,经常会出现数据被频繁修改读取的问题。 在同一时间,不同的业务逻辑修改同一表数据。

这种冲突很可能会导致无法恢复数据的混乱,因此必须通过事务管理数据。

的概念事务必须遵循ACID原则。 ACID指原子性(atomicity )、http://www.Sina.com/(一致性)、隔离性) isolation )

持久性。 通俗地说,事务其实是一系列指令的集合。

原子:操作这些命令时,要么全部执行成功,要么全部不执行。 如果任意一个命令执行失败,则所有命令执行失败,数据将回滚,恢复到执行命令前的数据状态。 一致性—事务的执行会将数据从一个状态转换到另一个状态,但总体数据的一致性是稳定的。 隔离:在事务执行过程中,发生的所有数据更改都只存在于该事务中,不会对外部产生任何影响。 只有在确认事务已成功提交后,事务对数据的更改才会显示。 要检索这些更改的数据,需要其他事务。 持久性:事务成功完成后,对数据更改将变为持久性。 并发事务问题如果许多事务处理相同的数据,并且没有有效的隔离机制,则在同时处理数据时会出现一些问题。

(1)第一种丢失更新:取消一个事务时,改写其他事务提交的更新数据。

dddqz去银行柜台存钱。 他账户原来的余额是100元,现在打算存到100元。 在他存钱的过程中,

银行年费被扣除5元,余额只剩下95元。 他突然又想到这100元要用来请她看电影,所以不打算存。

在他撤回存款操作后,余额仍然为他存款前的100元。 所以,那五元到底是谁的?

(2)脏读)某个事务读取其他事务未提交的更新数据。

dddqz的银行卡余额里有100元。 现在他打算用手机点外卖饮料,需要付10元。 但是此时,

他的女朋友喜欢衣服95元,她用dddqz的银行卡付款。 于是dddqz在支付的时候,

程序读取到他的余额只有5元,还不到10元,所以系统拒绝了他的交易

告诉他们余额不足。 但是,dddqz的女朋友最后因为密码错了,没能交易。 dddqz很郁闷,

银行卡里还有100元,怎么余额还不够? 他的女朋友更忧郁。 请参阅。 请参阅。 ) )

)3)幻读又称虚读。 一个事务执行两次查询,第二个结果集包含第一次不存在的行或某些行

删除的数据有两次结果不一致,原因是另一个事务在两次查询之间插入或删除了数据。

公司财务a办理员工工资计算业务,需要计算dddqz的工资并输入系统,必须查询明细信息两次

然后,将下一次的明细信息作为总数计算出来。 财务首次明细查询时,基本工资2000元,全勤奖1000元,

提成2000元,共计5000元。 在进行第二次计算时,财务b突然接到通知,下个月的节日福利也

按本月工资发放,每人100元。 于是财务b在每人的工资明细上增加了100元节日福利。

此时,财务a调查了第二次dddqz的工资明细,结果工资明细变成了4个数据,总数为5100元。

两次计算结果相差100元,额外出现的财务a奇怪的明细100元是从哪里来的呢? 都怪财务b没有对a说。 请参阅。 请参阅。 ) )

)4)不能重复)某事务处理2次读取同一行的数据的结果,得到不同状态的结果,中途正好更新其他事务处理

这个数据,两次的结果不同,不可靠。

dddqz是用手机购买价格为1W元的理财产品。 首先,系统会判断他的余额是否足够购买理财产品,如果能充分再获得

取现在的余额申请。 系统第一次在dddqz上读取的余额还剩1W元,正好足以购买产品。 但是这个时候正好

他的女朋友又看了看包5000元,这次密码终于没错她毫不犹豫刷了dddqz的银行卡买了这个

提包。 但该系统刚进行第二次确认时,发现dddqz余额只有5000元。

完全不够买。 于是系统生气了,拒绝了dddqz的购买行为,告诉他你真是个骗子!

一致性

(5)第二类丢失更新:是不可重复读的特殊情况。如果两个事物都读取同一行,然后两个都进行写操作,

并提交,第一个事物所做的改变就会丢失。

dddqz和女朋友一起去逛街。女朋友看中了一支口红,(对,女朋友就是用来表现买买买的)dddqz大方的掏出

等你。然后dddqz就坐在商城座椅上玩手机,

等着女朋友。这个时候,程序员的聊天群里有人推荐了一本书,dddqz一看,哎呀,真是本好书,还是限量发行呢,

我一定更要买到。于是dddqz赶紧找到购买渠道,进行付款操作。而同时,dddqz的女朋友也在不亦乐乎的买买买,

他们同时进行了一笔交易操作,但是这个时候银行系统出了问题,当他们都付款成功后,

却发现,银行只扣了dddqz的买书钱,却没有扣去女朋友此时交易的钱。哈哈哈,dddqz真是太开心了!


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。