MySQL中出現(xiàn)lock?wait?timeout?exceeded問(wèn)題及解決
1、MySQL出現(xiàn)lock wait timeout exceeded; try restarting transaction
我們可以通過(guò)到information_schema 中來(lái)進(jìn)行查找被鎖的語(yǔ)句。
解釋?zhuān)篿nformation_schema這張數(shù)據(jù)表保存了MySQL服務(wù)器所有數(shù)據(jù)庫(kù)的信息。如數(shù)據(jù)庫(kù)名,數(shù)據(jù)庫(kù)的表,表欄的數(shù)據(jù)類(lèi)型與訪問(wèn)權(quán)限等。再簡(jiǎn)單點(diǎn),這臺(tái)MySQL服務(wù)器上,到底有哪些數(shù)據(jù)庫(kù)、各個(gè)數(shù)據(jù)庫(kù)有哪些表,每張表的字段類(lèi)型是什么,各個(gè)數(shù)據(jù)庫(kù)要什么權(quán)限才能訪問(wèn),等等信息都保存在information_schema表里面。
我們可以用下面三張表來(lái)查原因:
innodb_trx當(dāng)前運(yùn)行的所有事務(wù)innodb_locks當(dāng)前出現(xiàn)的鎖innodb_lock_waits鎖等待的對(duì)應(yīng)關(guān)系
如果數(shù)據(jù)庫(kù)中有鎖的話,我們可以使用這條語(yǔ)句來(lái)查看:
select * from information_schema.innodb_trx

圖中紅色語(yǔ)句 LOCK WAIT為占用系統(tǒng)資源的語(yǔ)句,我們需要?dú)⒌暨@個(gè)鎖,執(zhí)行 kill 線程id號(hào)。上面這條記錄的id為199120823069, trx_mysql_thread_id 為 738178711, 所以我們執(zhí)行:kill 738178711殺掉這個(gè)MySQL語(yǔ)句的線程即可。
執(zhí)行之后:
kill 738178711 // 查詢(xún)線程 // SELECT * from information_schema.processlist WHERE id = 738178711; // show full processlist;

其他的記錄不需要關(guān)注,因?yàn)槠渌挠涗洜顟B(tài)為“RUNNING” 即正在執(zhí)行的事務(wù),并沒(méi)有鎖。
2、三張表字段說(shuō)明
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í)行線程用時(shí)比較久的用戶(hù),然后直接干掉。
SELECT * from information_schema.`PROCESSLIST` WHERE Time > 1000 AND USER = 'wonguser' ORDER BY TIME desc; kill 740097562
這樣把所有耗時(shí)比較久的任務(wù)干掉,就可以解決這個(gè)問(wèn)題了。
4、總結(jié)一下
關(guān)于我的那個(gè)問(wèn)題,我通過(guò)這個(gè)方法 select * from information_schema.innodb_trx 已經(jīng)殺掉了線程,但通過(guò)表直接修改那個(gè)id對(duì)應(yīng)的數(shù)據(jù),還是會(huì)彈出Lock wait timeout exceeded; try restarting transaction這樣的異常,在網(wǎng)上找了許多未找出具體的解決方法,后來(lái)自己靈光一現(xiàn),可以找出那些好事比較久的線程,然后把那些可疑的線程殺掉,沒(méi)想到這個(gè)問(wèn)題就解決了,可以正常對(duì)這行數(shù)據(jù)進(jìn)行操作了。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mySQL之關(guān)鍵字的執(zhí)行優(yōu)先級(jí)講解
這篇文章主要介紹了mySQL之關(guān)鍵字的執(zhí)行優(yōu)先級(jí)講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
Workbench連接不上阿里云服務(wù)器Ubuntu的Mysql解決方法(已測(cè))
這兩天為了解決workbench連接不上阿里云服務(wù)器的問(wèn)題,搞得頭大,網(wǎng)上搜到的教程都大同小異,但唯獨(dú)到我這就是行不通。不過(guò)好在最后終于解決了,記錄一下這個(gè)坑爹的過(guò)程,另外腳本之家小編特把這些問(wèn)題整理了一下,看完這一篇文章基本上就解決了2020-02-02
Navicat Premium15連接云服務(wù)器中的數(shù)據(jù)庫(kù)問(wèn)題及遇到坑
這篇文章主要介紹了Navicat Premium15連接云服務(wù)器中的數(shù)據(jù)庫(kù)問(wèn)題及遇到坑,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
從零開(kāi)始MySQL觸發(fā)器實(shí)戰(zhàn)攻略
想要掌握MySQL觸發(fā)器的實(shí)戰(zhàn)技巧嗎?從零開(kāi)始,跟我一起揭開(kāi)觸發(fā)器神秘的面紗!輕松入門(mén),迅速提升,這個(gè)指南將讓你的MySQL技能煥然一新!一探究竟,驚喜等你發(fā)現(xiàn)!2024-02-02
關(guān)于MySQL性能調(diào)優(yōu)你必須了解的15個(gè)重要變量(小結(jié))
MYSQL 應(yīng)該是比較流行的 WEB 后端數(shù)據(jù)庫(kù)。雖然 NOSQL 最近越來(lái)越多的被提到,但是相信大部分架構(gòu)師還是會(huì)選擇 MYSQL 來(lái)做數(shù)據(jù)存儲(chǔ)。本文作者總結(jié)梳理MySQL性能調(diào)優(yōu)的15個(gè)重要變量,感興趣的可以了解一下2019-07-07

