Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用laravel DB事务时是否会出现死锁?_Php_Mysql_Laravel_Transactions_Deadlock - Fatal编程技术网

Php 使用laravel DB事务时是否会出现死锁?

Php 使用laravel DB事务时是否会出现死锁?,php,mysql,laravel,transactions,deadlock,Php,Mysql,Laravel,Transactions,Deadlock,我正在使用MySQL和Laravel。想象一下,当两个事务在同一个tame上执行时,首先按照以下顺序更新表1和表2。第二个事务按以下顺序更新表2和表1。我有3个场景,我对其中哪一个场景感兴趣 T1 - transaction 1; T2 - transaction 2; 1场景)T1锁定表1。同时,T2锁定了表2。两张桌子都锁着。一段时间后,他们两人都将解锁锁定的表,以便T1能够修改表1,T2能够修改表1。一切都结束了,没有死锁 2场景)情况与上述相同,但T1和T2不会解锁它们的表,除非它们

我正在使用MySQL和Laravel。想象一下,当两个事务在同一个tame上执行时,首先按照以下顺序更新表1和表2。第二个事务按以下顺序更新表2和表1。我有3个场景,我对其中哪一个场景感兴趣

T1 - transaction 1;

T2 - transaction 2;
1场景)T1锁定表1。同时,T2锁定了表2。两张桌子都锁着。一段时间后,他们两人都将解锁锁定的表,以便T1能够修改表1,T2能够修改表1。一切都结束了,没有死锁

2场景)情况与上述相同,但T1和T2不会解锁它们的表,除非它们完成了所有工作(我的意思是修改了两个表)。他们无限期地等待第二张桌子被解锁。所以僵局

3场景)T1或T2锁定这两个表,所以第二个事务将等待并发事务完成其工作并解锁这两个表。然后它也锁上了桌子,一切都很好,没有死锁

以下哪种情况会发生?也许没有?我希望你们能帮我回答这个问题,这样我就知道我应该管理代码以避免事务死锁,还是laravel事务将自己做到这一点,我只使用事务而不考虑死锁。先谢谢你