mysql 鎖的現象和解決

2021-09-08 05:30:07 字數 1045 閱讀 5710

2018-12-3 14:43:11 星期一

資料庫鎖了的現象:

乙個程序程序一直在嘗試更新, 而且殺不掉, 重啟mysql以後還是會有;

乙個update語句執行了很久;

寫的業務都不可以, 查詢也很慢

原因:可能是事務沒有提交/結束

比如, 乙個事務開始了, 但是中途呼叫的其他方法除了錯誤, 或者方法不存在等導致事務一直沒有結束

這裡列出來找鎖相關的sql

1 show status like

'innodb_row_lock%';

2show processlist;

3 show status like

'table_locks%';

4 show open tables where in_use >

0;

查詢當前執行中的事務

select

*from information_schema.innodb_trx;

select

*from

information_schema.innodb_locks

select

*from information_schema.innodb_lock_waits

參考1: 

不要盲目重啟! 重啟mysql後程序消失但鎖依然存在!

重啟mysql後程序消失但鎖依然存在,因為回滾還要繼續,這是mysql對資料的保護機制

結論: 時間過長的update、delete等語句在kill之後會進行回滾操作,會鎖表,經常有人更換不同方式對大資料進行修改刪除,然而盲目的殺死正在長時間執行的程序後並不能馬上對錶進行新的操作,後果只能是等待之前的操作回滾結束,本想用更快的方式操作表結果得不償失,所以還是建議選擇好對錶修改操作方式然後一次執行,不再修改。

參考2 :  

show full processlist; 這個命令中最關鍵的就是state列

show status;

show variables like '%timeout%'

mysql 鎖的現象和解決

2018 12 3 14 43 11 星期一 資料庫鎖了的現象 乙個程序程序一直在嘗試更新,而且殺不掉,重啟mysql以後還是會有 乙個update語句執行了很久 寫的業務都不可以,查詢也很慢 原因 可能是事務沒有提交 結束 比如,乙個事務開始了,但是中途呼叫的其他方法除了錯誤,或者方法不存在等導致...

死鎖的現象和解決辦法

產生死鎖的根本原因是兩個或者兩個以上執行緒在執行過程中,因爭搶資源而產生相互等待的一種現象。在申請鎖的時候發生了交叉閉環申請。死鎖產生的四個條件 1 互斥。共享資源同時只能被乙個執行緒訪問。2 占有且等待。執行緒t1在取得共享資源a的時候,請求等待資源b的時候並不釋放資源a。3 不可搶占。其他執行緒...

ARP攻擊的現象和解決辦法

最近上網,總是看到罈子上發貼說什麼 經常掉線,網速爆卡云云.當然排除各式各樣的原因不談,今天我就只針對 arp攻擊給各位談一談它的現象和解決辦法.當然本人也屬於初學者階段,難免說的有不盡人意和不準確之處,還請高手們多多指點.arp攻擊一般採用的方法為arp欺騙,也可稱之為arp木馬.至於原理我就不耽...