问题出现环境:
- 在同一事务内先后对同一条数据进行插入和更新操作;
- 多台服务器操作同一数据库;
- 瞬时出现高并发现象。
原因分析:
- 在高并发的情况下,Spring事物造成数据库死锁,后续操作超时抛出异常;
- Mysql数据库采用InnoDB模式,默认参数:innodb_lock_wait_timeout设置锁等待的时间是50s,一旦数据库锁超过这个时间就会报错。
可以先参考博客:https://blog.csdn.net/java__project/article/details/100137526
若问题还没有得到解决,可以继续阅读下面内容。
解决方案
一、重启MySQL服务
二、增加锁的等待时间,时间是(s)
mysql> set innodb_lock_wait_timeout=100
mysql> set global innodb_lock_wait_timeout=100
查看结果:
mysql> show variables like ‘innodb_lock_wait_timeout’;