在開發(fā)的過程中,我們經(jīng)常需要查看一下當(dāng)前數(shù)據(jù)庫(kù)的執(zhí)行情況,比如如果我們select一個(gè)數(shù)據(jù),很長(zhǎng)時(shí)間都沒有返回,我們?cè)谙耄遣皇鞘裁磗ql語句把表鎖著了,或者什么sql把資源占完了,那么我們?cè)趺床檫@條sql呢?
辦法肯定是有的:
mysql> show full processlist;
我們?cè)敿?xì)介紹一下每個(gè)屬性是什么意思吧
id很容易就猜到是這個(gè)連接的id,值對(duì)應(yīng)這個(gè)連接使用的線程id。
User用戶名
Host連接的地址和端口,那么你可能會(huì)問,為什么我貼的例子的地址都是同一個(gè)host呢,很明顯是用了代理,感興趣的可以看看這篇文章http://www.phpv.net/html/1583.html,這里就不詳細(xì)解釋了。
db此連接所連接使用的數(shù)據(jù)庫(kù)名。
command一般有倆值:sleep和query,從字面意思就可以看出,一個(gè)是處理睡眠狀態(tài),就是處于連接狀態(tài),但是沒有正在執(zhí)行任何sql語句,Query代表正在執(zhí)行sql語句。
Time連接的時(shí)間。
State我個(gè)人覺得應(yīng)該是當(dāng)前線程的狀態(tài)吧。
info代表正在執(zhí)行的sql,如果command為sleep時(shí),它為空。
那如果我們遇到一個(gè)sql要執(zhí)行很長(zhǎng)時(shí)間,但是我們又不想讓它繼續(xù)執(zhí)行了,怎么辦呢?既然每個(gè)連接是在一個(gè)線程里維護(hù),這個(gè)線程是否可以刪除呢?我們嘗試一下:
mysql> show full processlist;
+-------+----------+----------------------+---------+---------+------+-------+-----------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-------+----------+----------------------+---------+---------+------+-------+-----------------------+
| 25 | tuan_sql | 192.168.100.39:60161 | tao800 | Sleep | 2 | | NULL |
| 12196 | tuan_sql | 192.168.100.39:34410 | tao800 | Sleep | 43 | | NULL |
| 13067 | tuan_sql | 192.168.100.39:40964 | tao800 | Sleep | 77 | | NULL |
| 15690 | tuan_sql | 192.168.100.39:33791 | tao800 | Query | 0 | NULL | show full processlist |
| 15813 | tuan_sql | 192.168.100.39:35257 | zhe_oem | Sleep | 239 | | NULL |
| 15814 | tuan_sql | 192.168.100.39:35258 | zhe_oem | Sleep | 239 | | NULL |
+-------+----------+----------------------+---------+---------+------+-------+-----------------------+
16 rows in set (0.00 sec)
我們殺掉15814這個(gè)線程:
mysql> kill 15814;
Query OK, 0 rows affected (0.00 sec)
————————————————
版權(quán)聲明:本文為CSDN博主「weixin_39594312」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_39594312/article/details/113633925