原因 1.资源竞争: 多个事务对同一个资源进行顺序不同的操作 2.未释放的资源: 事务完成之后未释放的资源,常因为程序异常而产生 3.事务的执行速度差异 获取资源后,执行速度慢的事务导致其他事务一直在等待,从而导致超时 4.数据量过大: 持有锁时又同时请求更多锁导致互相等待。 解决方法 1,多数的数据库管理系统会自动检测思索并且自动回滚部分事务来打破死锁 2.手动操作 3.MySQL自身处理: 开启死锁检测:定时检测并且自动终止事务解决,设置事务等待锁超时时间,超时则自动回滚事务解决