MySQL中出現(xiàn)lock?wait?timeout?exceeded問題及解決
1、MySQL出現(xiàn)lock wait timeout exceeded; try restarting transaction
我們可以通過到information_schema 中來進行查找被鎖的語句。
解釋:information_schema這張數(shù)據(jù)表保存了MySQL服務(wù)器所有數(shù)據(jù)庫的信息。如數(shù)據(jù)庫名,數(shù)據(jù)庫的表,表欄的數(shù)據(jù)類型與訪問權(quán)限等。再簡單點,這臺MySQL服務(wù)器上,到底有哪些數(shù)據(jù)庫、各個數(shù)據(jù)庫有哪些表,每張表的字段類型是什么,各個數(shù)據(jù)庫要什么權(quán)限才能訪問,等等信息都保存在information_schema表里面。
我們可以用下面三張表來查原因:
innodb_trx
當前運行的所有事務(wù)innodb_locks
當前出現(xiàn)的鎖innodb_lock_waits
鎖等待的對應(yīng)關(guān)系
如果數(shù)據(jù)庫中有鎖的話,我們可以使用這條語句來查看:
select * from information_schema.innodb_trx
圖中紅色語句 LOCK WAIT為占用系統(tǒng)資源的語句,我們需要殺掉這個鎖,執(zhí)行 kill 線程id號。上面這條記錄的id為199120823069, trx_mysql_thread_id 為 738178711, 所以我們執(zhí)行:kill 738178711殺掉這個MySQL語句的線程即可。
執(zhí)行之后:
kill 738178711 // 查詢線程 // SELECT * from information_schema.processlist WHERE id = 738178711; // show full processlist;
其他的記錄不需要關(guān)注,因為其他的記錄狀態(tài)為“RUNNING” 即正在執(zhí)行的事務(wù),并沒有鎖。
2、三張表字段說明
innodb_trx
desc information_schema.innodb_trx;
innodb_locks
desc information_schema.innodb_locks;
innodb_lock_waits
desc information_schema.innodb_lock_waits
3、終極方法
如果以上方法殺掉線程,但還是不能解決,則我們就可以查找執(zhí)行線程用時比較久的用戶,然后直接干掉。
SELECT * from information_schema.`PROCESSLIST` WHERE Time > 1000 AND USER = 'wonguser' ORDER BY TIME desc; kill 740097562
這樣把所有耗時比較久的任務(wù)干掉,就可以解決這個問題了。
4、總結(jié)一下
關(guān)于我的那個問題,我通過這個方法 select * from information_schema.innodb_trx 已經(jīng)殺掉了線程,但通過表直接修改那個id對應(yīng)的數(shù)據(jù),還是會彈出Lock wait timeout exceeded; try restarting transaction這樣的異常,在網(wǎng)上找了許多未找出具體的解決方法,后來自己靈光一現(xiàn),可以找出那些好事比較久的線程,然后把那些可疑的線程殺掉,沒想到這個問題就解決了,可以正常對這行數(shù)據(jù)進行操作了。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Mysql?刪除重復數(shù)據(jù)保留一條有效數(shù)據(jù)(最新推薦)
這篇文章主要介紹了Mysql?刪除重復數(shù)據(jù)保留一條有效數(shù)據(jù),實現(xiàn)原理也很簡單,mysql刪除重復數(shù)據(jù),多個字段分組操作,結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-02-02在windows環(huán)境下配置并隨意切換兩種mysql版本的方法
這篇文章主要介紹了mysql:如何在windows環(huán)境下配置并隨意切換兩種mysql版本,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01MYSQL數(shù)據(jù)庫Innodb?引擎mvcc鎖實現(xiàn)原理
這篇文章主要介紹了MYSQL數(shù)據(jù)庫Innodb?引擎mvcc鎖實現(xiàn)原理,但是mvcc?的實現(xiàn)原理是什么呢?下文我們就來實例說明來mvcc?的實現(xiàn)原理,感興趣的小伙伴可以參考一下2022-05-05MySQL的Data_ADD函數(shù)與日期格式化函數(shù)說明
今天看到了MySQL的日期函數(shù),里面很多有用的,這里只把兩個參數(shù)不太好記的粘下來了。2010-06-06