1.查看表被鎖狀態(tài)
創(chuàng)新互聯(lián)建站主要從事網(wǎng)頁設計、PC網(wǎng)站建設(電腦版網(wǎng)站建設)、wap網(wǎng)站建設(手機版網(wǎng)站建設)、響應式網(wǎng)站、程序開發(fā)、網(wǎng)站優(yōu)化、微網(wǎng)站、小程序設計等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設行業(yè)積累了豐富的成都網(wǎng)站建設、成都網(wǎng)站制作、網(wǎng)站設計、網(wǎng)絡營銷經(jīng)驗,集策劃、開發(fā)、設計、營銷、管理等多方位專業(yè)化運作于一體。
2.查看造成死鎖的sql語句
3.查詢進程
4.解鎖(刪除進程)
5.查看正在鎖的事物? (8.0以下版本)
6.查看等待鎖的事物?(8.0以下版本)
一、show ENGINE INNODB status
查看死鎖位置,分析。
二、
首先解決死鎖可以從死鎖發(fā)生的條件入手,最容易解決的就是更改獲取資源的順序;
其次是避免長事務,讓事務執(zhí)行的時間盡可能少,讓事務的覆蓋范圍盡可能小,長事務會導致并發(fā)度降低,且會有更多的SQL查 詢延遲;
給整個方法加事務是否是必須的?可以不加事務的盡量不加。
第一步,查出已鎖的進程
查看正在鎖的事務
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
``
查看等待鎖的事務
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
``
INNODB_TRX表主要是包含了正在InnoDB引擎中執(zhí)行的所有事務的信息,包括waiting for a lock和running的事務
select * from information_schema.innodb_trx
``
第二步,kill進程
show engin innodb status; //最后一次死鎖信息及sql
show open tables where in_use 0 //查看鎖表
方法/步驟
使用終端或命令提示符登錄到MySQL,輸入命令:
mysql -h xxxx.xxx.xxx -P 3306 -u username -p password
在MySQL客戶端下輸入命令:
show engine innodb status \G;
在打印出來的信息中找到“LATEST DETECTED DEADLOCK”一節(jié)內(nèi)容
分析其中的內(nèi)容,我們就可以知道最近導致死鎖的事務有哪些