遇到乙個Mysql死鎖問題,記錄下

2021-08-10 04:41:30 字數 378 閱讀 3947

對一張表做批量編輯,

表的基本介面如下:

t_test:

bigint  id,

int  status,

varchar  clientid,

更新語句是:

update t_test set status=2 where clientid='...'

當批量操作時,批量提交多次update語句,每次語句執行是需要做以下操作:

1.獲取主鍵索引

2.獲取clientid列

當多次提交時,2次update,分別通過主鍵id和clientid對同一行加上行鎖後,都在等待對方釋放鎖,從而造成死鎖

方案:通過id作為條件update,不引入主鍵索引之外的字段,避免死鎖的機會

乙個問題記錄2014 10 30

問題背景 公升級所有的動態庫,客戶端獲取不到伺服器資料,並且公升級實際伺服器時沒有備份資料 環境涉及lisp,dll,config 問題查詢過程 1 先在實際伺服器上查詢,看日誌,發現可能是 原因。2 然後在測試伺服器上查詢是否是 的原因,但是發現測試伺服器各種缺必要的資料,也就是說測試伺服器不滿足...

乙個Mybatis問題記錄

工作中基本上都會使用mybatis。有一次為了達到控制許可權的效果,又為了最少的修改現有的 使用了自定義的mybatis的外掛程式,在運算元據的時候做一次查詢,判斷是否有許可權操作。這種許可權控制是很暴力且有很多漏洞的。問題1在一次操作中,當引數只有乙個且引數型別為long型時,預設這個引數是表a的...

資料庫 mysql 死鎖問題記錄

工作中遇到了deadlock found when trying to get lock try restarting transaction 資料庫發生死鎖了.資料庫的事務隔離級別是rr repeatable read 1 通過命令 show engine innodb status,將statu...