MySql中怎樣查詢表是否被鎖
MySql查詢表是否被鎖
查看表被鎖狀態(tài)
# 查詢哪些表鎖了 show OPEN TABLES where In_use > 0;
查看造成死鎖的sql語句
# 查詢innodb引擎的運行時信息 show engine innodb status;
查詢進程
# 查詢所有進程 show processlist;
解鎖(刪除進程)
# 刪除進程 kill id;
查看正在執(zhí)行的事務(wù)
# 查看正在執(zhí)行的事務(wù) select * from information_schema.INNODB_TRX;
查看正在鎖的事物
# 查看正在鎖的事物 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS
查看等待鎖的事物
# 查看等待鎖的事務(wù) SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
MySql出現(xiàn)數(shù)據(jù)庫表被鎖解決方案
出現(xiàn)的現(xiàn)象
頁面出現(xiàn)502錯誤,數(shù)據(jù)庫CPU持續(xù)飆升,大量事務(wù)堆積未提交成功(事務(wù)一直處于阻塞階段)
查看阻塞事務(wù)列表,發(fā)現(xiàn)其中有鎖表現(xiàn)象。
排查與解決思路
1)查看數(shù)據(jù)庫中是否有表被鎖
show open tables where in_use > 0;
如果上述返回有結(jié)果,說明有表正在被使用,返回字段如下
| Database | Table | In_use | Name_locked |
2)查看進程(只會顯示當(dāng)前用戶的進程,除非是root用戶)
show processlist;
3)查看當(dāng)前運行所有事務(wù)
SELECT * FROM information_schema.INNODB_TRX;
4)查看當(dāng)前出現(xiàn)的所有鎖
SELECT * FROM information_schema.INNODB_LOCKs;
5)查詢鎖等待的對應(yīng)關(guān)系
SELECT * FROM information_schema.INNODB_LOCK_waits;
查看事務(wù)表 INNODB_TRX中 是否有正在鎖定的事務(wù)線程
確認(rèn) ID 是否在 show processlist 的 sleep 線程中:如果在,說明這個sleep的線程事務(wù)一直沒有commit 或者 rollback,而是卡住了,需要手動kill掉。
搜索的結(jié)果中,如果在事務(wù)表發(fā)現(xiàn)了很多任務(wù),最好都 kill 掉。
6)清理事務(wù)指定的線程 ID
kill 1234;
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Shell下實現(xiàn)免密碼快速登陸MySQL數(shù)據(jù)庫的方法
這篇文章主要給大家介紹了在Shell下實現(xiàn)免密碼快速登陸MySQL數(shù)據(jù)庫的方法,文中通過示例代碼一步步介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起看看吧。2017-06-06
Ubuntu下完美實現(xiàn)遷移MySQL數(shù)據(jù)庫位置
這篇文章主要介紹了Ubuntu下完美實現(xiàn)遷移MySQL數(shù)據(jù)庫位置,十分詳細(xì),有需要的小伙伴可以參考下2015-03-03
一文詳解MySQL表數(shù)據(jù)完整性的8大約束機制
數(shù)據(jù)庫設(shè)計的關(guān)鍵不僅在于存儲數(shù)據(jù),更在于保障數(shù)據(jù)的準(zhǔn)確性與一致性,MySQL通過8大約束機制,為數(shù)據(jù)完整性筑起堅固防線,本文將深入探討8種核心約束,并通過實際案例展示其應(yīng)用方法,需要的朋友可以參考下2026-02-02
MySQL與PHP的基礎(chǔ)與應(yīng)用專題之內(nèi)置函數(shù)
MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,本系列將帶你掌握php與mysql的基礎(chǔ)應(yīng)用,本篇MySQL的內(nèi)置函數(shù)開始2022-02-02
詳解數(shù)據(jù)庫varchar與char有哪些區(qū)別
CHAR和VARCHAR是MySQL中兩種最重要的字符串類型,兩者的原理和區(qū)別也是面試中高頻問題,如果是你,會從哪幾個角度去回答這個問題呢?今天,我給大家總結(jié)了一下相關(guān)知識點,感興趣的朋友一起看看吧2023-10-10

