SHOW [FULL] PROCESSLIST
INFORMATION SCHEMA 實作的 SHOW PROCESSLIST
已被棄用,並可能在未來 MySQL 版本中移除。建議改用效能架構 (Performance Schema) 實作的 SHOW PROCESSLIST
。
MySQL 程序清單會顯示伺服器內執行緒目前正在執行的作業。SHOW PROCESSLIST
陳述式是程序資訊的來源之一。如需比較此陳述式與其他來源,請參閱程序資訊的來源。
另一個用於 SHOW PROCESSLIST
的實作方式,是基於效能架構 (Performance Schema) 的 processlist
資料表,與預設的 SHOW PROCESSLIST
實作方式不同,它不需要互斥鎖,且具有較佳的效能特性。詳情請參閱第 29.12.22.7 節:「processlist 資料表」。
如果您擁有 PROCESS
權限,您可以查看所有執行緒,即使是屬於其他使用者的執行緒。否則(如果沒有 PROCESS
權限),非匿名使用者可以存取自己執行緒的相關資訊,但無法存取其他使用者的執行緒,而匿名使用者則無法存取任何執行緒資訊。
如果沒有 FULL
關鍵字,SHOW PROCESSLIST
只會在 Info
欄位中顯示每個陳述式的前 100 個字元。
如果您收到 「連線過多」錯誤訊息,並想找出問題所在,SHOW PROCESSLIST
陳述式非常有用。MySQL 保留一個額外的連線,以供具有 CONNECTION_ADMIN
權限(或已棄用的 SUPER
權限)的帳戶使用,以確保管理員始終可以連線並檢查系統(假設您沒有將此權限授予所有使用者)。
可以使用 KILL
陳述式終止執行緒。請參閱第 15.7.8.4 節:「KILL 陳述式」。
SHOW PROCESSLIST
輸出範例
mysql> SHOW FULL PROCESSLIST\G
*************************** 1. row ***************************
Id: 1
User: system user
Host:
db: NULL
Command: Connect
Time: 1030455
State: Waiting for source 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 replica
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 replica; 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 replica; 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
SHOW PROCESSLIST
輸出有這些欄位
連線識別碼。這與
INFORMATION_SCHEMA
PROCESSLIST
資料表的ID
欄位中所顯示的值相同,在效能架構 (Performance Schema) 的threads
資料表的PROCESSLIST_ID
欄位中顯示,並由執行緒內的CONNECTION_ID()
函式傳回。發出陳述式的 MySQL 使用者。
system user
值指的是伺服器產生,用於在內部處理任務的非用戶端執行緒,例如延遲列處理常式執行緒,或是在複本主機上使用的 I/O (接收器) 或 SQL (套用器) 執行緒。對於system user
,Host
欄位中未指定主機。unauthenticated user
指的是已與用戶端連線建立關聯,但尚未對用戶端使用者進行驗證的執行緒。event_scheduler
指的是監控排程事件的執行緒(請參閱第 27.4 節:「使用事件排程器」)。注意User
值為system user
與SYSTEM_USER
權限不同。前者指定內部執行緒。後者區分系統使用者和一般使用者帳戶類別(請參閱第 8.2.11 節:「帳戶類別」)。發出陳述式的用戶端主機名稱(
system user
除外,其沒有主機)。TCP/IP 連線的主機名稱會以
格式回報,以便更容易判斷哪個用戶端正在執行什麼動作。host_name
:client_port
執行緒的預設資料庫,如果未選取任何資料庫,則為
NULL
。執行緒代表用戶端執行的命令類型,如果工作階段處於閒置狀態,則為
Sleep
。如需執行緒命令的說明,請參閱第 10.14 節:「檢查伺服器執行緒 (程序) 資訊」。此欄位的值對應於用戶端/伺服器協定的COM_
命令和xxx
Com_
狀態變數。請參閱第 7.1.10 節:「伺服器狀態變數」。xxx
執行緒處於目前狀態的時間(以秒為單位)。對於複本 SQL 執行緒,此值為最後一個複寫事件的時間戳記與複本主機的實際時間之間的時間差(以秒為單位)。請參閱第 19.2.3 節:「複寫執行緒」。
一個動作、事件或狀態,表示執行緒正在執行什麼。如需
State
值的說明,請參閱第 10.14 節:「檢查伺服器執行緒 (程序) 資訊」。大多數狀態都對應於非常快速的作業。如果執行緒在特定狀態停留數秒,則可能存在需要調查的問題。
執行緒正在執行的陳述式,如果沒有執行任何陳述式,則為
NULL
。陳述式可能是傳送至伺服器的陳述式,或如果陳述式執行其他陳述式,則是最內層的陳述式。例如,如果CALL
陳述式執行一個正在執行SELECT
陳述式的預存程序,Info
值會顯示SELECT
陳述式。