死锁是指两个或者多个事务在同一资源上的相互占用,并请求锁定对方占用的资源,从而导致恶性循环的现象。
从两个方面理解:
1.当多个事务试图以不同的顺序锁定资源时,就可能会产生死锁。

有两个事务A与B,事务A与B同时执行sql1,则事务A会锁住记录B;事务B会锁住记录A,两条记录同时被锁住。接下来事务A执行sql2,发现记录A被事务B锁住,事务B执行sql2发现记录B被事务A锁住,陷入死循环,产生死锁。
多个事务同时锁定同一个资源时,也会产生死锁。

事务A与事务B同时操作同一条记录A,产生死锁。
上面的两个图实例假设使用的是MySQL数据库,存储引擎为innodb,行锁定。
本文详细解释了数据库中死锁的概念,指出当多个事务以不同顺序尝试锁定资源时可能出现死锁。通过两个具体例子,展示了事务A与B如何在MySQL的InnoDB存储引擎中因行锁定产生死锁,说明了死锁产生的条件和循环等待的情况。
1万+

被折叠的 条评论
为什么被折叠?



