![87df4faa96cad0d5a1bcd0f79fcaf677.png](https://img-blog.csdnimg.cn/img_convert/87df4faa96cad0d5a1bcd0f79fcaf677.png)
在生产环境出现了一次死锁,小编第一次碰到巨头疼,便随手写下这篇文章来记录一下
先说结论,没有索引并且执行事务较长,
日志截图如下:
com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction
; Deadlock found when trying to get lock; try restarting transaction; nested exception is com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction(String), 2(Integer), 2020-06-08T00:59:37.909(LocalDateTime)
大致意思是,当尝试去获取数据库锁的时候发生了死锁
经过排查原因如下(经过查看官方文档进行分析得出的结论)
我们的数据库是5.7版本的RC隔离级别,在一个service中的业务代码较多,执行时间比较长,当更新某一张表的时候,where语句中又没有相应的索引,所以会锁住所有行ÿ