站长网(Downzz.com)
站长网(Downzz.com)
当前位置:首页 > 站长教程 > 数据库 > Mysql
MySQL遇到Deadlock found when trying to get lock,解决方案
时间:2019-03-06 10:54:09 围观:1006 来源:原创

最近遇到一个MYSQL update语句出现Deadlock found when trying to get lock的问题,分析一下原因。


什么情况下会出现Deadlock found when trying to get lock?

https://dev.mysql.com/doc/refman/5.6/en/innodb-deadlocks.html

出现死锁需要2个条件:

1)至少2个client(A,B)同时在执行事务

2)clientA锁定了某一行,未提交事务,此时clientB也需要update/delete这一行,此时clientB就会进入等待状态,直到出现Deadlock 。


如何减少死锁的发生?

很重要的两点,就可以避免这种情况

1)事务操作锁定的行数较少(更精确的索引条件)。

2)保证事务较短的执行时间,完成后马上提交。

这里有更加详细的描述:

https://dev.mysql.com/doc/refman/5.6/en/innodb-deadlocks-handling.html


上一篇:mysql数据库删除增加修改等操作详解

已经是最后一篇:下一篇

文章为作者独立观点不代表本网立场,未经允许不得转载。