W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
依次執(zhí)行1-6步,運行第6步生成的語句即可。
如果特別著急,運行 1 2 6 步 以及第6步生成的kill語句 即可。
?show open tables where in_use > 0 ;
?如果查詢結(jié)果為空。則證明表沒有在使用。結(jié)束。
mysql> show open tables where in_use > 0 ;
Empty set (0.00 sec)
如果查詢結(jié)果不為空,繼續(xù)后續(xù)的步驟。
mysql> show open tables where in_use > 0 ;
+----------+-------+--------+-------------+
| Database | Table | In_use | Name_locked |
+----------+-------+--------+-------------+
| test | t | 1 | 0 |
+----------+-------+--------+-------------+
1 row in set (0.00 sec)
?
show processlist;
?show processlist 是顯示用戶正在運行的線程,需要注意的是,除了 root 用戶能看到所有正在運行的線程外,其他用戶都只能看到自己正在運行的線程(即與您正在使用的MySQL帳戶關(guān)聯(lián)的線程),看不到其它用戶正在運行的線程。如果不使用FULL關(guān)鍵字,Info字段中只顯示每條語句的前100個字符。
SELECT * FROM information_schema.INNODB_TRX;
SELECT * FROM information_schema.INNODB_LOCKs;
SELECT * FROM information_schema.INNODB_LOCK_waits;
看事務(wù)表INNODB_TRX,里面是否有正在鎖定的事務(wù)線程,看看ID是否在show processlist里面的sleep線程中,如果是,就證明這個sleep的線程事務(wù)一直沒有commit或者rollback而是卡住了,我們需要手動kill掉。
搜索的結(jié)果是在事務(wù)表發(fā)現(xiàn)了很多任務(wù),這時候最好都kill掉。
這里用的方法是:通過information_schema.processlist表中的連接信息生成需要處理掉的MySQL連接的語句臨時文件,然后執(zhí)行臨時文件中生成的指令。
SELECT concat('KILL ',id,';')
FROM information_schema.processlist p
INNER JOIN information_schema.INNODB_TRX x
ON p.id=x.trx_mysql_thread_id
WHERE db='test';
記得修改對應(yīng)的數(shù)據(jù)庫名。
這個語句執(zhí)行后結(jié)果如下:
mysql> SELECT concat('KILL ',id,';') FROM information_schema.processlist p INNER JOIN information_schema.INNODB_TRX x ON p.id=x.trx_mysql_thread_id WHERE db='test';
+------------------------+
| concat('KILL ',id,';') |
+------------------------+
| KILL 42; |
| KILL 40; |
+------------------------+
2 rows in set (0.00 sec)
執(zhí)行結(jié)果里的兩個kill語句即可解決鎖表。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: