mysql鎖表確認及解除鎖表的實現(xiàn)示例
一、查看表是否被鎖
一共3種方式
1、查詢庫表命令
information_schema庫里的processlist表,存著正在進行的線程數(shù)據(jù),可通過where條件模糊匹配執(zhí)行sql中的表名來拿到該表的相關線程數(shù)據(jù)。
通過查看state字段確認表是否被鎖,可翻譯或百度查看詳細鎖表原因。
select id,db,user,host,command,time,state,info from information_schema.processlist #where info like '%表名%' order by time desc;

| 字段 | 注釋 |
| id | 線程id標識,當鎖表或進程卡死時可用kill殺掉 |
| user | 當前連接用戶 |
| host | 顯示當前線程命令發(fā)出的的客戶端Ip和端口號,用來追蹤 |
| db | 當前連接的數(shù)據(jù)庫名 |
| command | 連接狀態(tài),一般是休眠(sleep),查詢(query),連接(connect)的命令的類型 |
| time | 連接執(zhí)行時間,單位是秒 |
| state | 顯示當前線程中sql語句的執(zhí)行狀態(tài) |
| info | 執(zhí)行的sql語句 |
確認被鎖后,用命令kill殺掉該線程來釋放。
kill id;
2、連接工具直接查詢
我這用navicat演示



通過查看state字段確認表是否被鎖。
確認被鎖后,用命令kill殺掉該線程來釋放。
3、show processlist 命令
使用show processlist;查詢命令來查看當前所有線程
show processlist;
也可添加full查看更詳細的內容
show full processlist;
區(qū)別:
- 如果不用full,則在Info字段中只顯示每個語句的前100個字符
這個命令要一條條數(shù)據(jù)查找,建議使用前兩種才方法
查看info字段中的表名。
通過查看state字段確認表是否被鎖。
確認被鎖后,用命令kill殺掉該線程來釋放。
二、解鎖表
確認被鎖后,用命令kill殺掉相關線程來釋放。
kill 線程id;
到此這篇關于mysql 鎖表確認及解除鎖表的實現(xiàn)示例的文章就介紹到這了,更多相關mysql 鎖表確認及解除鎖表內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySQL使用mysqldump實現(xiàn)數(shù)據(jù)完全備份
mysqldump是MySQL自帶的備份工具,可方便實現(xiàn)對MySQL的備份,也可以將指定的庫、表導出為SQL腳本,下面小編就來教大家如何使用mysqldump實現(xiàn)數(shù)據(jù)完全備份吧2023-07-07
mysql利用group_concat()合并多行數(shù)據(jù)到一行
把查詢name字段得到的多行記錄進行合并,可以通過程序實現(xiàn),但也可直接在sql層完成,需要的朋友可以參考下2014-07-07
MySQL將多行數(shù)據(jù)轉換為一行數(shù)據(jù)的實現(xiàn)示例
在MySQL中,GROUP_CONCAT函數(shù)可以將多個記錄的列值連接成一個字符串,適用于將多行數(shù)據(jù)合并為單行顯示,本文就來詳細的介紹一下,感興趣的可以了解一下2024-09-09

