对于存在多用户并发访问的项目,如果遇到了数据库deadLock 时 ,我们如何根据服务器的日志进行排查原因呢?
当你在服务器的日志中发现了在执行某条Insert或者是update 时 发生了deadLock ,很多开发人员都会去查看这个sql
对应的Java代码是否可能产生此种情况。其实你看到的时结果,最初的原因不在这个方法上面,当然也不排除特殊情况,
那么我们如何找到问题所在呢?1 看到的日志虽然不是问题的直接所在,但是间接知道了时那张表发生了死锁问题。
2 找到项目中操作此表的所有模块 进行排除,测试。
一般情况为: 出现问题的功能模块对此表资源进行了占据,使得其他模块不能进行访问此表。
我们可能在发生死锁的情况下,猜测为时:spring 事物管理出现了问题,数据库设计应该采用乐观锁。