使用終端或命令提示符登錄到MySQL,輸入命令:
目前創新互聯已為上千多家的企業提供了網站建設、域名、網站空間、網站托管維護、企業網站設計、岑溪網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
mysql -h xxxx.xxx.xxx -P 3306 -u username -p password
在MySQL客戶端下輸入命令:
show engine innodb status \G;
在打印出來的信息中找到“LATEST DETECTED DEADLOCK”一節內容,分析其中的內容,我們就可以知道最近導致死鎖的事務有哪些。
1、查詢是否鎖表
show OPEN TABLES where In_use 0;
查詢到相對應的進程 === 然后 kill id
2、查詢進程
show processlist
補充:
查看正在鎖的事務
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
查看等待鎖的事務
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
可直接在mysql命令行執行:show engine innodb status\G; 查看造成死鎖的sql語句,分析索引情況,然后優化sql然后show processlist; 另外可以打開慢查詢日志
第一步,查出已鎖的進程
查看正在鎖的事務
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
``
查看等待鎖的事務
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
``
INNODB_TRX表主要是包含了正在InnoDB引擎中執行的所有事務的信息,包括waiting for a lock和running的事務
select * from information_schema.innodb_trx
``
第二步,kill進程
show engin innodb status; //最后一次死鎖信息及sql
show open tables where in_use 0 //查看鎖表