死锁分为两种情况,一种是死锁,一种是锁等待,通常我们说的MySQL"死锁",指的是锁等待
事务1锁定记录A
事务2锁定记录B
事务1尝试更新记录B(这里是锁等待,等待事务2提交,释放B)
事务2尝试更新记录A(这里是死锁,mysql会自动检测,并报ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction 错误)
因为你没办法真的构建出来 真正的死锁,MYSQL会自动检测,并且禁止你这样做
但是要关闭这个死锁检测功能,需要从源代码级别去修改,你敢吗?显然一旦关闭,会有很多负面影响。
mysql就是把这种死锁问题简单处理了,处理一个问题最好的方式,就是不让这个问题发生