mysql 顯示完整的processlist中info信息

由於數據庫的使用導致cpu飆升,想要查詢數據庫的具體什麼語句導致了cpu飆升需要查看運行中的sql語句
此次我使用了進行查詢:
也可使用mysqladmin processlist進行查詢(但本次沒有用)

show  processlist

如果有SUPER權限,則可以看到全部的線程,否則,只能看到自己發起的線程(這是指,當前對應的MySQL帳戶運行的線程)。

mysql> show processlist;

+-------+-----------+---------------------+----------+---------+------+-------+------------------+

| Id | User | Host | db | Command | Time | State | Info |

+-------+-----------+---------------------+----------+---------+------+-------+------------------+

| 19161 | test_user | 171.8.216.253:63583 | tbkttest | Sleep | 685 | | NULL |

| 19164 | test_user | 171.8.216.253:63677 | tbkttest | Sleep | 297 | | NULL |

| 19165 | root | localhost | tbkttest | Query | 0 | NULL | show processlist |

| 19166 | root | localhost | NULL | Sleep | 36 | | NULL |

+-------+-----------+---------------------+----------+---------+------+-------+------------------+

4 rows in set (0.00 sec)

先簡單說一下各列的含義和用途,

第一列 id,不用說了吧,一個標識,你要kill一個語句的時候很有用。

第二列 user列,顯示單前用戶,如果不是root,這個命令就只顯示你權限範圍內的sql語句。

第三列 host列,顯示這個語句是從哪個ip的哪個端口上發出的。可以用來追蹤出問題語句的用戶。

第四列 db列,顯示這個進程目前連接的是哪個數據庫。

第五列 command列,顯示當前連接的執行的命令,一般就是休眠(sleep),查詢(query),連接(connect)。

第六列 time列,此這個狀態持續的時間,單位是秒。

第七列 state列,顯示使用當前連接的sql語句的狀態,很重要的列,後續會有所有的狀態的描述,請注意,state只是語句執行中的某一個狀態,一個sql語句,已查詢爲例,可能需要經過copying to tmp table,Sorting result,Sending data等狀態纔可以完成。

第八列 info列,顯示這個sql語句,因爲長度有限,所以長的sql語句就顯示不全,但是一個判斷問題語句的重要依據。


使用show processlist;但是顯示info信息是不全的,導致無法看到具體查詢語句


解決方法:
最後通過

1:show full  processlist
2:select  *  from    information_schema.processlist

這兩條語句可以查詢到

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章