使用laraveldb事务时是否会出现死锁?

sg2wtvxw  于 2021-06-15  发布在  Mysql
关注(0)|答案(0)|浏览(248)

我正在使用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事务将自己做到这一点,我只使用事务,不考虑死锁。先谢谢你。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题