org.springframework.dao.CannotAcquireLockException 解決方案

Mysql事物鎖等待超時 Lock wait timeout exceeded; try restarting transaction

原因:被阻塞的語句是根據主鍵更新的,另一個update語句(調用另外一個方法)也是更新這條記錄,沒提交導致的鎖等待超時

解決辦法

1、合併兩條更新爲一條,比如我這裏問題:積分先減後增,需要更新減積分,然後又根據業務(抽獎中積分,中積分了又加積分)加積分,

減積分可以通過查詢獲取當前積分(在更新的時候使用樂觀鎖來實現)

2、如果項目使用spring 可以考慮使用把傳播機制了類型修改爲 REQUIRES_NEW
 
3、不使用事物
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章