自己原文公众号: https://mp.weixin.qq.com/s/Vo4Fo3mfmifnxWOl3WYx5w
死锁可大可小。有的深邃的问题是需要功力的,但是我们大多数人遇到的都是简单的。我今天这里谈谈简单的,因为我发现简单的上大家还有点不清楚。
死锁一定要2个会话以上才行(含两个会话)。倒不一定要2个表或者多个表。一个表也能造成死锁。
红色的代表步骤顺序。我这里演示是2个表
A会话做id2的更新,然后B做ID1的更新;
然后A做ID1的更新,然后B做id2的更新。
我这里特意写了大小写的ID,只要大写的ID是一行记录,小写的id是一行记录就行。至于是不是一张表无所谓。



如何避免?
1、不要交叉,比如大家都按照一定的顺序操作表。不要一个是AB 另外一个是BA。如果表多了ABCDEFG,那就更加复杂了。这个是根本。
2、执行的足够快。再下一个会话事务开始前已经执行完毕了。这个是王道。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/637517/viewspace-2847326/ ,如需转载,请注明出处,否则将追究法律责任。