mysql死鎖排查過程

2021-10-02 02:35:43 字數 1656 閱讀 4577

lock wait timeout exceeded; try restarting transaction的異常,錯誤提示的意思,很明顯,是因為這條語句被鎖住了,所以釋放這個鎖。

解決方案:

我們可以通過到information_schema中來進行查詢被鎖的語句。

解釋:information_schema這張資料表儲存了mysql伺服器所有資料庫的資訊。如資料庫名,資料庫的表,表欄的資料型別與訪問許可權等。再簡單點,這台mysql伺服器上,到底有哪些資料庫、各個資料庫有哪些表,每張表的字段型別是什麼,各個資料庫要什麼許可權才能訪問,等等資訊都儲存在information_schema表裡面。
我們可以用下面三張表來查原因:

如果資料庫中有鎖的話,我們可以使用這條語句來檢視:

圖中紅色語句lock wait為占用系統資源的語句,我們需要殺掉這個鎖,執行kill執行緒id號。上面這條記錄的id為199120823069,trx_mysql_thread_id為 738178711, 所以我們執行:kill 738178711殺掉這個mysql語句的執行緒即可。

執行之後:

kill 738178711

// 查詢執行緒

其他的記錄不需要關注,因為其他的記錄狀態為「running」 即正在執行的事務,並沒有鎖。

最後,可以結合

show processlist;

kill 584;

命令先找出耗時的sql,可以殺掉程序,也可以定位到機器的ip,避免日後重蹈覆轍。

連線排查過程

一 遠端連線排除過程 預備知識 ip位址 伺服器的位置 私網ip位址 內網 區域網 只有當前環境的人 192.168.0.10.0.0.埠號碼 洗浴中心服務 搓澡 按摩 推拿 拔罐 刮痧 特殊服務 暗號 21 25 80 443 23 22 暗號是用來區分不同服務的 埠是用來區分下面不同服務的 遠端...

Udp丟包排查過程

1.檢視udp丟包,cat proc net snmp grep udp 比netstat su效果好 2.檢視網絡卡丟包 ifconfig 或者ethtool s eth1 3.netstat alupt 檢視佇列裡現存的包數,如果過多說明有問題。4.檢視socket佇列長度,cat proc s...

MySQL死鎖排查

答 1 檢視當前事務中是否有鎖資訊 select trx id,trx state,trx started,trx requested lock id,trx weight from innodb trx 2 檢視鎖資訊 表鎖or行鎖,鎖的那張表 select lock id,lock trx id...