原因分析:
在高並發的情況下,Spring事物造成數據庫死鎖,后續操作超時拋出異常。
Mysql數據庫采用InnoDB模式,默認參數:innodb_lock_wait_timeout設置鎖等待的時間是50s,一旦數據庫鎖超過這個時間就會報錯。
解決方案
1、通過下面語句查找到為提交事務的數據,kill掉此線程即可。
select * from information_schema.innodb_trx
kill trx_mysql_thread_id ;
如果kill掉的sql 是update或insert 先保存sql再kill
2、增加鎖等待時間,即增大下面配置項參數值,單位為秒(s)
innodb_lock_wait_timeout=200
3、優化存儲過程,事務避免過長時間的等待