十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
以下五種方法可以快速定位全局鎖的位置,僅供參考。

在賓川等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都全網(wǎng)營(yíng)銷,外貿(mào)營(yíng)銷網(wǎng)站建設(shè),賓川網(wǎng)站建設(shè)費(fèi)用合理。
方法1:利用 metadata_locks 視圖
此方法僅適用于 MySQL 5.7 以上版本,該版本 performance_schema 新增了 metadata_locks,如果上鎖前啟用了元數(shù)據(jù)鎖的探針(默認(rèn)是未啟用的),可以比較容易的定位全局鎖會(huì)話。
方法2:利用 events_statements_history 視圖此方法適用于 MySQL 5.6 以上版本,啟用 performance_schema.eventsstatements_history(5.6 默認(rèn)未啟用,5.7 默認(rèn)啟用),該表會(huì) SQL 歷史記錄執(zhí)行,如果請(qǐng)求太多,會(huì)自動(dòng)清理早期的信息,有可能將上鎖會(huì)話的信息清理掉。
方法3:利用 gdb 工具如果上述兩種都用不了或者沒來(lái)得及啟用,可以嘗試第三種方法。利用 gdb 找到所有線程信息,查看每個(gè)線程中持有全局鎖對(duì)象,輸出對(duì)應(yīng)的會(huì)話 ID,為了便于快速定位,我寫成了腳本形式。也可以使用 gdb 交互模式,但 attach mysql 進(jìn)程后 mysql 會(huì)完全 hang 住,讀請(qǐng)求也會(huì)受到影響,不建議使用交互模式。
方法4:show processlist
如果備份程序使用的特定用戶執(zhí)行備份,如果是 root 用戶備份,那 time 值越大的是持鎖會(huì)話的概率越大,如果業(yè)務(wù)也用 root 訪問(wèn),重點(diǎn)是 state 和 info 為空的,這里有個(gè)小技巧可以快速篩選,篩選后嘗試 kill 對(duì)應(yīng) ID,再觀察是否還有 wait global read lock 狀態(tài)的會(huì)話。
方法5:重啟試試!
1.查看表被鎖狀態(tài)
2.查看造成死鎖的sql語(yǔ)句
3.查詢進(jìn)程
4.解鎖(刪除進(jìn)程)
5.查看正在鎖的事物? (8.0以下版本)
6.查看等待鎖的事物?(8.0以下版本)
一:檢查是否鎖表, 查詢進(jìn)程并殺死進(jìn)程
1) 查詢是否鎖表
show open tables where in_use 0;
2) 查詢進(jìn)程(如果您有SUPER權(quán)限,您可以看到所有線程。否則,您只能看到您自己的線程)
show processlist;
二:查看在鎖事務(wù),殺死事務(wù)對(duì)應(yīng)的線程ID
1) 查看正在鎖的事務(wù)
select * from information_schema.INNODB_LOCKS;
2) 殺死進(jìn)程id(就是[select * from information_schema.INNODB_LOCKS; ]命令的trx_mysql_thread_id列)
kill 線程ID
3) 查看等待鎖的事務(wù)
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
其它:
1) 查看服務(wù)器狀態(tài)
show status like '%lock%';
2) 查看超時(shí)時(shí)間:
show variables like '%timeout%';
1、確定mysql有鎖表的情況則使用以下命令查看鎖表進(jìn)程
2、殺掉查詢結(jié)果中已經(jīng)鎖表的trx_mysql_thread_id
擴(kuò)展:
1、查看鎖的事務(wù)
2、查看等待鎖的事務(wù)
3、查詢是否鎖表:
4、查詢進(jìn)程