MySQL數(shù)據(jù)庫(kù)show processlist指令使用解析
在實(shí)際項(xiàng)目開(kāi)發(fā)中,如果我們對(duì)數(shù)據(jù)庫(kù)的壓力比較大,比如有大批量的查詢或者插入等sql,尤其是多線程插入等情況,針對(duì)部分執(zhí)行比較慢的sql,我們可以將其kill掉,常用的一個(gè)命令就是show processlist
1. show processlist是什么
show processlist:通過(guò)查看mysql的官網(wǎng),可以發(fā)現(xià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客戶端等。
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ǔ)句查詢數(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查詢到的截圖。
3. show processlist怎么解讀
下面對(duì)于使用該命令查詢到的結(jié)果進(jìn)行解讀。
Id:鏈接mysql 服務(wù)器線程的唯一標(biāo)識(shí),可以通過(guò)kill來(lái)終止此線程的鏈接。
User:當(dāng)前線程鏈接數(shù)據(jù)庫(kù)的用戶
Host:顯示這個(gè)語(yǔ)句是從哪個(gè)ip 的哪個(gè)端口上發(fā)出的??捎脕?lái)追蹤出問(wèn)題語(yǔ)句的用戶
db: 線程鏈接的數(shù)據(jù)庫(kù),如果沒(méi)有則為null
Command: 顯示當(dāng)前連接的執(zhí)行的命令,一般就是休眠或空閑(sleep),查詢(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ǔ)句,已查詢?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ǔ)句可以使客戶端發(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
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
MySql中表的復(fù)合查詢實(shí)現(xiàn)示例
在MySQL中,復(fù)合查詢是對(duì)多張表進(jìn)行查詢的操作,包括多表查詢、自連接、子查詢等,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11
MySQL數(shù)據(jù)庫(kù)自連接實(shí)例講解
針對(duì)相同的表進(jìn)行的連接被稱(chēng)為"自連接"(self?join),下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)自連接實(shí)例講解的相關(guān)資料,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
MySQL中?LBCC?和?MVCC?的理解及常見(jiàn)問(wèn)題示例
這篇文章主要介紹了MySQL中LBCC和MVCC的理解及常見(jiàn)問(wèn)題示例,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的朋友可以參考一下2022-09-09
SQL創(chuàng)建視圖的注意事項(xiàng)及說(shuō)明
這篇文章主要介紹了SQL創(chuàng)建視圖的注意事項(xiàng)及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
解決Windows安裝mysql時(shí)提示MSVCR120.DLL動(dòng)態(tài)庫(kù)缺失問(wèn)題
在Windows Server 2012系統(tǒng)上安裝MySQL 5.7時(shí)遇到“由于找不到MSVCR120.dll,無(wú)法繼續(xù)執(zhí)行代碼”的錯(cuò)誤,原因是系統(tǒng)缺少部分配置文件,解決方法是下載并安裝vcredist文件2025-02-02

