共計(jì) 2331 個(gè)字符,預(yù)計(jì)需要花費(fèi) 6 分鐘才能閱讀完成。
自動(dòng)寫(xiě)代碼機(jī)器人,免費(fèi)開(kāi)通
怎么在 MySQL 數(shù)據(jù)庫(kù)中使用 show processlist 指令?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
1. show processlist 是什么
show processlist:通過(guò)查看 mysql 的官網(wǎng),可以發(fā)現(xiàn),其主要是查詢(xún)數(shù)據(jù)庫(kù)中哪些線程正在執(zhí)行,針對(duì)比較慢的線程(time 的數(shù)值比較大的線程)我們可以將其 kill 掉。此外,show full processlist 返回的結(jié)果是實(shí)時(shí)變化的。
2. show processlist 怎么用
有三種方式可以執(zhí)行 show processlist,可以通過(guò)命令行、SQL 語(yǔ)句、Navicat 客戶(hù)端等。
1)命令行:SHOW FULL PROCESSLIST\G
執(zhí)行結(jié)果如下:
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)可以通過(guò) sql 語(yǔ)句查詢(xún)數(shù)據(jù)庫(kù)中相關(guān)信息的表
select id, db, user, host, command, time, state, info from information_schema.processlist order by time desc
3)可以通過(guò) Navicat 工具查看,如下圖是使用 Navicat 查詢(xún)到的截圖。
3. show processlist 怎么解讀
下面對(duì)于使用該命令查詢(xún)到的結(jié)果進(jìn)行解讀。
Id:鏈接 mysql 服務(wù)器線程的唯一標(biāo)識(shí),可以通過(guò) kill 來(lái)終止此線程的鏈接。
User:當(dāng)前線程鏈接數(shù)據(jù)庫(kù)的用戶(hù)
Host:顯示這個(gè)語(yǔ)句是從哪個(gè) ip 的哪個(gè)端口上發(fā)出的。可用來(lái)追蹤出問(wèn)題語(yǔ)句的用戶(hù)
db: 線程鏈接的數(shù)據(jù)庫(kù),如果沒(méi)有則為 null
Command: 顯示當(dāng)前連接的執(zhí)行的命令,一般就是休眠或空閑(sleep),查詢(xún)(query),連接(connect)
Time: 線程處在當(dāng)前狀態(tài)的時(shí)間,單位是秒
State:顯示使用當(dāng)前連接的 sql 語(yǔ)句的狀態(tài),很重要的列,后續(xù)會(huì)有所有的狀態(tài)的描述,請(qǐng)注意,state 只是語(yǔ)句執(zhí)行中的某一個(gè)狀態(tài),一個(gè) sql 語(yǔ)句,已查詢(xún)?yōu)槔赡苄枰?jīng)過(guò) copying to tmp table,Sorting result,Sending data 等狀態(tài)才可以完成
Info: 線程執(zhí)行的 sql 語(yǔ)句,如果沒(méi)有語(yǔ)句執(zhí)行則為 null。這個(gè)語(yǔ)句可以使客戶(hù)端發(fā)來(lái)的執(zhí)行語(yǔ)句也可以是內(nèi)部執(zhí)行的語(yǔ)句
4. show processlist 結(jié)果怎么處理
在上面的步驟中,我們可以查到每個(gè)線程的執(zhí)行時(shí)間等信息,因此針對(duì)執(zhí)行時(shí)間比較長(zhǎng)的線程,我們可以直接將其 kill 掉,直接執(zhí)行 kill Id 號(hào)即可。
如果要查時(shí)間超過(guò) 5 分鐘的,可以拼接并執(zhí)行以下 sql
select concat(kill , id, ) from information_schema.processlist where command != Sleep and time 5*60 order by time desc
關(guān)于怎么在 MySQL 數(shù)據(jù)庫(kù)中使用 show processlist 指令問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注丸趣 TV 行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
向 AI 問(wèn)一下細(xì)節(jié)