我正在使用mysql和laravel。想象一下,当两个事务同时执行时,首先按以下顺序更新表1和表2。第二个事务按以下顺序更新表2和表1。所以我有3个场景,我对其中哪一个场景会发生感兴趣。
T1 - transaction 1;
T2 - transaction 2;
1)t1锁表1。同时t2锁定表2。两张table都锁上了。一段时间后,他们两个都将解锁他们锁定的表,这样t1将能够修改表1,t2将能够修改表1。一切都结束了,没有死锁。
2)场景)情况与上述相同,但t1和t2在完成所有工作(我的意思是修改两个表)之前不会解锁它们的表。他们无限期地等待第二张table被解锁。所以僵局。
3)t1或t2锁定这两个表,所以第二个事务将等待并发事务完成其工作并解锁这两个表。然后它也锁定了两个表和一切都很好,没有死锁。
以下哪种情况会发生?也许一个也没有?我希望你们能帮我回答这个问题,这样我就知道我应该管理代码以避免事务死锁,还是laravel事务将自己做到这一点,我只使用事务,不考虑死锁。先谢谢你。
暂无答案!
目前还没有任何答案,快来回答吧!