您好,登錄后才能下訂單哦!
怎么在MySQL數據庫中使用show processlist指令?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
1. show processlist是什么
show processlist:通過查看mysql的官網,可以發現,其主要是查詢數據庫中哪些線程正在執行,針對比較慢的線程(time的數值比較大的線程)我們可以將其kill掉。此外,show full processlist 返回的結果是實時變化的。
2. show processlist怎么用
有三種方式可以執行show processlist,可以通過命令行、SQL語句、Navicat客戶端等。
1) 命令行:SHOW FULL PROCESSLIST\G
執行結果如下:
mysql> SHOW FULL PROCESSLIST\G *************************** 1. row *************************** Id: 1 User: system user Host: db: NULL Command: Connect Time: 1030455 State: Waiting for master to send event Info: NULL *************************** 2. row *************************** Id: 2 User: system user Host: db: NULL Command: Connect Time: 1004 State: Has read all relay log; waiting for the slave I/O thread to update it Info: NULL *************************** 3. row *************************** Id: 3112 User: replikator Host: artemis:2204 db: NULL Command: Binlog Dump Time: 2144 State: Has sent all binlog to slave; waiting for binlog to be updated Info: NULL *************************** 4. row *************************** Id: 3113 User: replikator Host: iconnect2:45781 db: NULL Command: Binlog Dump Time: 2086 State: Has sent all binlog to slave; waiting for binlog to be updated Info: NULL *************************** 5. row *************************** Id: 3123 User: stefan Host: localhost db: apollon Command: Query Time: 0 State: NULL Info: SHOW FULL PROCESSLIST rows in set (0.00 sec)
2) 可以通過sql語句查詢數據庫中相關信息的表
select id, db, user, host, command, time, state, info from information_schema.processlist order by time desc
3) 可以通過Navicat工具查看,如下圖是使用Navicat查詢到的截圖。
3. show processlist怎么解讀
下面對于使用該命令查詢到的結果進行解讀。
Id:鏈接mysql 服務器線程的唯一標識,可以通過kill來終止此線程的鏈接。
User:當前線程鏈接數據庫的用戶
Host:顯示這個語句是從哪個ip 的哪個端口上發出的。可用來追蹤出問題語句的用戶
db: 線程鏈接的數據庫,如果沒有則為null
Command: 顯示當前連接的執行的命令,一般就是休眠或空閑(sleep),查詢(query),連接(connect)
Time: 線程處在當前狀態的時間,單位是秒
State:顯示使用當前連接的sql語句的狀態,很重要的列,后續會有所有的狀態的描述,請注意,state只是語句執行中的某一個狀態,一個 sql語句,已查詢為例,可能需要經過copying to tmp table,Sorting result,Sending data等狀態才可以完成
Info: 線程執行的sql語句,如果沒有語句執行則為null。這個語句可以使客戶端發來的執行語句也可以是內部執行的語句
4. show processlist結果怎么處理
在上面的步驟中,我們可以查到每個線程的執行時間等信息,因此針對執行時間比較長的線程,我們可以直接將其kill掉,直接執行 kill Id號即可。
如果要查時間超過5分鐘的,可以拼接并執行以下sql
select concat('kill ', id, ';') from information_schema.processlist where command != 'Sleep' and time > 5*60 order by time desc
關于怎么在MySQL數據庫中使用show processlist指令問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。