MySql中怎樣查詢表是否被鎖
MySql查詢表是否被鎖
查看表被鎖狀態(tài)
# 查詢哪些表鎖了 show OPEN TABLES where In_use > 0;
查看造成死鎖的sql語句
# 查詢innodb引擎的運(yùn)行時信息 show engine innodb status;
查詢進(jìn)程
# 查詢所有進(jìn)程 show processlist;
解鎖(刪除進(jìn)程)
# 刪除進(jìn)程 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)查看進(jìn)程(只會顯示當(dāng)前用戶的進(jìn)程,除非是root用戶)
show processlist;
3)查看當(dāng)前運(yùn)行所有事務(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)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Mysql服務(wù)器的安裝配置與啟動關(guān)閉方法詳解
MySQL 是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在 WEB 應(yīng)用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關(guān)系數(shù)據(jù)庫管理系統(tǒng))應(yīng)用軟件之一2021-10-10mysql啟動提示mysql.host 不存在,啟動失敗的解決方法
我將s9當(dāng)眾原來的mysql4.0刪除后,重新裝了個mysql5.0,啟動過程中報(bào)一下錯誤,啟動失敗,查了一下群里面的老帖子也沒有個具體的明確說明2011-10-10mysql導(dǎo)入csv的4種報(bào)錯的解決方法
這篇文章主要介紹了mysql導(dǎo)入csv的4種報(bào)錯的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12MySQL 數(shù)據(jù)庫設(shè)計(jì)復(fù)習(xí)筆記及項(xiàng)目實(shí)戰(zhàn)
參考的數(shù)據(jù)庫文檔主要有:目前國內(nèi)的常見的PHP系統(tǒng)的數(shù)據(jù)庫2010-03-03