1. 程式人生 > 其它 >MYSQL優化之processlist

MYSQL優化之processlist

1、processlist

show processlist 是顯示使用者正在執行的執行緒,需要注意的是,除了 root 使用者能看到所有正在執行的執行緒外,其他使用者都只能看到自己正在執行的執行緒,看不到其它使用者正在執行的執行緒。

除非單獨個這個使用者賦予了PROCESS 許可權。

show processlist 顯示的資訊都是來自MySQL系統庫 information_schema 中的 processlist 表。所以使用下面的查詢語句可以獲得相同的結果:

select * from information_schema.processlist

1、1 欄位說明:

Id: 就是這個執行緒的唯一標識,當我們發現這個執行緒有問題的時候,可以通過 kill 命令,加上這個Id值將這個執行緒殺掉。前面我們說了show processlist 顯示的資訊時來自information_schema.processlist 表,所以這個Id就是這個表的主鍵。

User: 就是指啟動這個執行緒的使用者。

Host: 記錄了傳送請求的客戶端的 IP 和 埠號。通過這些資訊在排查問題的時候,我們可以定位到是哪個客戶端的哪個程序傳送的請求。

DB: 當前執行的命令是在哪一個資料庫上。如果沒有指定資料庫,則該值為 NULL 。

Command: 是指此刻該執行緒正在執行的命令。這個很複雜,下面單獨解釋

Time: 表示該執行緒處於當前狀態的時間。

State: 執行緒的狀態,和 Command 對應,下面單獨解釋。

Info: 一般記錄的是執行緒執行的語句。預設只顯示前100個字元,也就是你看到的語句可能是截斷了的,要看全部資訊,需要使用 show full processlist。

1、2 下面我們單獨看一下 Command 的值:

Binlog Dump: 主節點正在將二進位制日誌 ,同步到從節點

Change User: 正在執行一個 change-user 的操作

Close Stmt: 正在關閉一個Prepared Statement 物件

Connect: 一個從節點連上了主節點

Connect Out: 一個從節點正在連主節點

Create DB: 正在執行一個create-database 的操作

Daemon: 伺服器內部執行緒,而不是來自客戶端的連結

Debug: 執行緒正在生成除錯資訊

Delayed Insert: 該執行緒是一個延遲插入的處理程式

Drop DB: 正在執行一個 drop-database 的操作

Execute: 正在執行一個 Prepared Statement

Fetch: 正在從Prepared Statement 中獲取執行結果

Field List: 正在獲取表的列資訊

Init DB: 該執行緒正在選取一個預設的資料庫

Kill : 正在執行 kill 語句,殺死指定執行緒

Long Data: 正在從Prepared Statement 中檢索 long data

Ping: 正在處理 server-ping 的請求

Prepare: 該執行緒正在準備一個 Prepared Statement

ProcessList: 該執行緒正在生成伺服器執行緒相關資訊

Query: 該執行緒正在執行一個語句

Quit: 該執行緒正在退出

Refresh:該執行緒正在刷表,日誌或快取;或者在重置狀態變數,或者在複製伺服器資訊

Register Slave: 正在註冊從節點

Reset Stmt: 正在重置 prepared statement

Set Option: 正在設定或重置客戶端的 statement-execution 選項

Shutdown: 正在關閉伺服器

Sleep: 正在等待客戶端向它傳送執行語句

Statistics: 該執行緒正在生成 server-status 資訊

Table Dump: 正在傳送表的內容到從伺服器

Time: Unused